首页 > TAG信息列表 > HDU3507
HDU3507 print article (斜率优化DP)
状态表示:dp[i]表示打印前i个单词的最小成本;s[i]维护前缀和。 状态转移:dp[i]=min(dp[j]+(s[i]-s[j])2)+m , 0<=j<i。 换成y=kx+b的形式:dp[j]+s[j]2=2*s[i]*s[j]+dp[i]-s[i]2-m。 算法步骤:1.枚举i=1...n,k=2*s[i]。 2.检查单调队列队头,排除决策.。 3.此时队头就是最优决策j,根据方程计HDU3507-Print Article
题目描述 Zero has an old printer that doesn't work well sometimes. As it is antique, he still like to use it to print articles. But it is too old to work for a long time and it will certainly wear and tear, so Zero use a cost to evaluate this degree. Onehdu3507
不难得到递推式f[i]=min{f[j]+(sum[i]-sum[j])^2+m}; 去掉min函数并展开:f[i]=f[j]+sum[i]^2-2*sum[i]*sum[j]+sum[j]^2+m 将含i的项与含j的项分离,并把单纯含j的项写在左边:f[j]+sum[j]^2=2*sum[i]*sum[j]+f[i]-sum[i]^2-m 现在把f[j]+sum[j]^2看做y,2*sum[i]看做k,sum[j]看做x,f[i]-suHDU3507 Print Article(经典斜率优化dp)
一道很老的斜率优化dp 斜率优化看上去很难,其实是有技巧的 。 对于dp题目,如果你想优化他,一定要先列出朴素的表达式并观察性质 对于本题我们可以发现,如果要更新dp[i],我们就要从前面找到dp[j]+(s[i]-s[j])^2+m的最小值,其中s是前缀和 我们就可以猜测,一定有很多不可能转移的内容,我们应