斜率优化
ZigZagK
一个蒟蒻。
展开
-
斜率优化
f[i]=min{f[j]+a[i]|j<i}f[i]=min{f[j]+a[j]|j<i}f[i]=min{f[j]+a[i]+a[j]|j<i}像上面这些 i 的信息和 j 的信息不相关的线性DP,用堆,单调栈,线段树等都可以进行优化,但是如果 i 的信息和 j 的信息相关,比如:f[i]=min{f[j]+(a[i]−a[j])2|j<i}就不能用普通的方法优化了,这时候需要用到斜率优化。原创 2017-03-27 19:46:38 · 1043 阅读 · 1 评论 -
【斜率优化】BZOJ1597(Usaco2008 Mar)[土地购买]题解
题目概述有 nn 块土地,每块土地有长 rr 和宽 cc ,一次可以购买若干块土地,每次购买土地的代价是选择的土地的最大 rr ×\times 最大 cc ,求买下所有土地的最小代价。解题报告由于要买下所有土地,所以如果对于 ii ,存在 j(j≠i)j(j\ne i) 使得 rj≥ri,cj≥cir_j\ge r_i,c_j\ge c_i ,则 ii 就不需要考虑了。这样的话我们可以排序然后去掉不原创 2017-09-27 18:43:06 · 298 阅读 · 0 评论 -
【斜率优化】BZOJ1911(Apio2010)[特别行动队]题解
题目概述有 nn 个士兵,战斗力为 xix_i ,每次编队只能用连续的士兵,定义 Sum(i)Sum(i) 表示前缀和,将 [i,j][i,j] 编队的战斗力为 A(Sum(j)−Sum(i−1))2+B(Sum(j)−Sum(i−1))+CA(Sum(j)-Sum(i-1))^2+B(Sum(j)-Sum(i-1))+C ,求最大战斗力。解题报告加了个二次函数强制把裸的线性DP搞成了斜率优化……由原创 2017-09-27 20:18:01 · 344 阅读 · 0 评论 -
【斜率优化】BZOJ3675(Apio2014)[序列分割]题解
题目概述有一个序列 {an}\{a_n\} ,可以分割 mm 次,每次分割的得分是左边总和 ×\times 右边总和,分割之后就成为了两个新序列,求最大得分。解题报告显然是二维DP,定义 f[j][i]f[j][i] 表示切了 jj 次,第 jj 次切在 ii 的最大得分,那么:f[j][i]=min{f[j−1][k]+(sum[i]−sum[k])(sum[n]−sum[k])|k<i}f[j]原创 2017-09-28 10:03:28 · 344 阅读 · 0 评论