题目大意:将一个升序的,有N个元素的序列,分组。要求每组的元素不少于K个,计算出组内各元素与最小元素的之差的和,将每组的这个值加起来,其和要最小。
N<500000,K<N
分析:

dp[i]=MIN(dp[j]+sum[i]-sum[j]-(i-j)*arr[j+1]);
令y=dp[j]+sum[i]-sum[j]+j*arr[j+1],x=arr[j+1],b=i,g=dp[i],
于是有y-bx=g
因为b值是递增的,所以有效决策点构成了下凸包。
可以用单调队列解决,又因为每组个数不能少于k个,元素进入队列时延迟k个时间单位进入。比如当前dp[i]求出,但暂缓入队,等到dp[i+k-1]求出以后再入队,然后再求dp[i+k],此时队列中的所有元素都距离i+k至少k个元素了,所以最佳决策点只需要在队列中按照斜率关系找就行了。
另外,前k-1个元素可以不用入队,因为它们不可能做决策点。但0要入队,因为它是决策点。
这道题wa了很多次,在比较斜率的时候因为用的是乘法,所以中间结果是会溢出的,一直都没有检查出来。太粗心了。
还有这题如果把turnup改为>=返回真,就错了。按理,改为>=,凸包中会包含共线的点,但这不应该影响结果的正确性。想了很久,搞不懂什么原因,也没有找到什么好的解释。

最新文章

  1. Servlet中以HashMap存放临时变量,解决跳转新页面请求参数过多时浏览器地址栏超长
  2. iOS架构网址
  3. 高度30px,宽度自适应,点线在文字中间
  4. 5个最顶级jQuery图表类库插件-Charting plugin
  5. 单例模式——Singleton
  6. unix io 模型浅析
  7. vmware-tools(vmware workstation 10.0.4)安装的时候遇到的bug
  8. NoSql 精粹导读图
  9. 线段树(单标记+离散化+扫描线+双标记)+zkw线段树+权值线段树+主席树及一些例题
  10. CAP 2.3版本发布,支持 MongoDB
  11. 在Linux(Centos7)系统上对进行Hadoop分布式配置以及运行Hadoop伪分布式实例
  12. Html中的img标签 加载失败
  13. AtCoder Beginner Contest 120 D - Decayed Bridges(并查集)
  14. shell 脚本加密
  15. 微信小程序 如何获取用户code
  16. 30个php操作redis常用方法代码例子(转载)
  17. [CB转帖]台湾晶圆厂产能居全球第一 大陆排名第五但增长最多
  18. topcoder srm 325 div1
  19. Alpha冲刺报告(10/12)(麻瓜制造者)
  20. Eclipse 文件太长,导致着色异常问题

热门文章

  1. 搭建一个免费的,无限流量的Blog----github Pages和Jekyll入门
  2. iis 管理员执行 aspnet_iis.exe
  3. Codeforces Round #365 (Div. 2) D 树状数组+离线处理
  4. jquery保存用户名和密码到cookie里面
  5. API中FileReader 接口事件
  6. 颜色追踪块CamShift---33
  7. Maven项目中找不到maven dependencies library
  8. 1-1 Java简介
  9. scala言语基础学习七
  10. vimium 使用心得