![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
斜率优化
ljq真的不能再吃了
珍惜每一天
展开
-
【POJ2018 Best Cow Fences】 求斜率
POJ2018 题意就是求 (sum[i] - sum[j-1]) /(i - (j-1)) 我们发现这就是 sum函数的斜率 那么我们从左向右维护一个下凸函数 言外之意 上凸点肯定是不符合不需要枚举的 那么我们每次枚举 然后再根据斜率单调上升 就可以O(n)的找出这个最大的值 用一个模拟双端队列维护即可 /* if you can't see the repay Why not ...原创 2019-05-09 00:10:04 · 141 阅读 · 0 评论 -
【P4360 [CEOI2004]锯木厂选址】斜率优化
P4360 一开始推了个式子啊 dis数组代表第i个数和第一个树的距离 dp数组代表第前面的树以第i个树为第二个锯木厂的最小代价 sum数组代表前面所有树到当前树为终点代价 容易推出式子就是 SUM[n+1] - cnt[i](dis[j]-dis[i]) - cnt[j](dis[n+1] - dis[j]) 我们枚举第二个锯木厂放哪里 那么 k > i 如果更优 就是 dp[n+1] -...原创 2019-05-09 18:37:16 · 129 阅读 · 0 评论 -
【Hdu 3507 Print Article】斜率优化
Hdu 3507 题意还是比较好懂的 主要是推出 dp[i] = dp[j] + (sum[i]-sum[j])(sum[i]-sum[j]) + m; 然后我们利用 k > j 选 k 策略大于优 得到 dp[j] + (sum[i]-sum[j])(sum[i]-sum[j])+m>=dp[k]+(sum[i]-sum[k])*(sum[i]-sum[k])+m 得到 dp[j] ...原创 2019-05-09 21:11:08 · 90 阅读 · 0 评论 -
【BZOJ 1096 [ZJOI2007]仓库建设】斜率优化dp
BZOJ 1096 其实和锯木厂那题是差不多的 然后主要是式子列出来 斜率优化都是这种套路 然后这次知道了++h的时候一定要注意顺序 否则解就是另一个意思了 /* if you can't see the repay Why not just work step by step rubbish is relaxed to ljq */ #include <cs...原创 2019-05-10 23:26:49 · 139 阅读 · 0 评论 -
【BZOJ 1911 [Apio2010]特别行动队】斜率优化
bzoj1911 这道题跟hdu3507有异曲同工之妙 我们先这样化简 sum数组代表前缀和 dp[i] = max(dp[i],dp[j] + a*(sum[i]-sum[j])(sum[i]-sum[j]) + b(sum[i]-sum[j])+c) 那么假设 k > j 并且 选 k 比 j 优 那么就是 dp[j] + a*(sum[i]-sum[j])(sum[i]-sum[j])...原创 2019-05-11 00:05:29 · 126 阅读 · 0 评论 -
【BZOJ 1010 [HNOI2008]玩具装箱toy】 斜率优化
bzoj 1010 说实话啊 一开始搞这题把自己心态搞崩了 dp状态好列 但是和高手的差距就是 我只是统计了前缀和 高手们都是统计了 sum[i] = arr[1] + arr[2] + … +arr[i] + i 这样我们是不是就避免了 i - j - 1? 很巧妙吧 为什么C要+1 因为我们默认是丛 j + 1 到 i 你从前缀和就能体现了 式子这样列 dp[i] = min(dp[i],dp...原创 2019-05-11 00:43:47 · 100 阅读 · 0 评论