题目大意:将一个升序的,有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改为>=返回真,就错了。按理,改为>=,凸包中会包含共线的点,但这不应该影响结果的正确性。想了很久,搞不懂什么原因,也没有找到什么好的解释。

POJ 3709 K-Anonymous Sequence的更多相关文章

  1. poj 3111 K Best 最大化平均值 二分思想

    poj 3111 K Best 最大化平均值 二分思想 题目链接: http://poj.org/problem?id=3111 思路: 挑战程序竞赛书上讲的很好,下面的解释也基本来源于此书 设定条件 ...

  2. K-Anonymous Sequence(poj 3709)

    http://poj.org/problem?id=3709 给定一个长度为n的非严格单调递增数列a1,...,an.每一次操作可以使数列中的任何一项的值减小1.现在要使数列中的每一项都满足其他项中至 ...

  3. POJ 3709 K-Anonymous Sequence(斜率优化DP)

    [题目链接] http://poj.org/problem?id=3709 [题目大意] 给出一个长度为n个非严格单调递增数列,每次操作可以使得其中任意一项减一, 问现在使得数列中每项数相同的数的数量 ...

  4. POJ 3709 K-Anonymous Sequence (单调队列优化)

    题意:给定一个不下降数列,一个K,将数列分成若干段,每段的数字个数不小于K,每段的代价是这段内每个数字减去这段中最小数字之和.求一种分法使得总代价最小? 思路:F[i]表示到i的最小代价.f[i]=m ...

  5. POJ 3709 K-Anonymous Sequence - 斜率优化dp

    描述 给定一个数列 $a$, 分成若干段,每段至少有$k$个数, 将每段中的数减少至所有数都相同, 求最小的变化量 题解 易得到状态转移方程 $F_i = \min(F_j  + sum_i - su ...

  6. POJ 1019:Number Sequence 二分查找

    Number Sequence Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 36013   Accepted: 10409 ...

  7. POJ 题目1141 Brackets Sequence(区间DP记录路径)

    Brackets Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 27793   Accepted: 788 ...

  8. Poj 2081 Recaman's Sequence之解题报告

                                                                                                         ...

  9. POJ 3111 K Best(二分答案)

    [题目链接] http://poj.org/problem?id=3111 [题目大意] 选取k个物品,最大化sum(ai)/sum(bi) [题解] 如果答案是x,那么有sigma(a)>=s ...

随机推荐

  1. linux安装phpredis扩展

    1.下载扩展安装包 wget   https://github.com/nicolasff/phpredis/downloads 2.解压 tar -zxvf nicolasff-phpredis-2 ...

  2. codevs 2216 线段树 两种更新方式的冲突

    题目描述 Description “神州“载人飞船的发射成功让小可可非常激动,他立志长大后要成为一名宇航员假期一始,他就报名参加了“小小宇航员夏令营”,在这里小可可不仅学到了丰富的宇航知识,还参与解决 ...

  3. matlab演奏《卡农》

    % Cripple Pachebel’s Canon on Matlab% Have fun fs = 44100; % sample ratedt = 1/fs; T16 = 0.125; t16 ...

  4. 关于HTML的Element

    今天搞HTML的时候,发现了一些操作element的方法.先引用一篇. 1.document.getElementById(id);  2.document.getElementByTagName(t ...

  5. linux 下查看机器是cpu是几核的(转)

    几个cpu more /proc/cpuinfo |grep "physical id"|uniq|wc -l 每个cpu是几核(假设cpu配置相同) more /proc/cpu ...

  6. eclipse使用jetty插件出现内存溢出解决方案

    系统运行在MAVEN中的jetty插件下,当在ECLIPSE运 clean jetty:run时系统提示 OutOfMemoryError: PermGen space. 解决办法:设置run as ...

  7. dedecms的特性-----不完整

    1.前后台分离彻底,连模板引擎都不同 2.多入口,但使用相同的基类--------每个入口都清晰

  8. CSS网页中的相对定位与绝对定位

    在CSS中有这样的一个指令:(position),在DreamWeaver中文版中翻译为“定位”,常用的属性有两个:relative(相对)与 absolute(绝对).有很多朋友对这条指令的用法还是 ...

  9. for循环小题

    已知数列1,1,2,3,5,8,…….,N.输出前N项的和: 出1到100之间所有偶数之和 国际象棋问题 已知数列1,1,2,3,5,8,…….,N.输出前N项的和: int a = 1, b = 1 ...

  10. 怎么在OCR文字识别软件中安装和启动 OCR文字识别软件 Hot Folder

    默认情况下,ABBYY Hot Folder 会与 ABBYY FineReader 12 一起安装到计算机中.(关于ABBYY FineReader 12请参考ABBYY FineReader 12 ...