首页 > 代码库 > 学渣乱搞系列之dp斜率优化

学渣乱搞系列之dp斜率优化

学渣乱搞系列之dp斜率优化

          By 狂徒归来

  貌似dp的斜率优化一直很难搞啊,尤其是像我这种数学很挫的学渣,压根不懂什么凸包,什么上凸下凸的,哎。。。说多了都是泪,跟wdd讨论了下,得出一些结论。本文很大部分参考了大神Accept的文章,不过此神貌似早已绝迹江湖,这篇文章写得好,也写得很差,前半部分叙述得很好,可是关键,关键部分说得很乱,有些许错误,很多大神都进行了评论指出,但是大神Accept貌似没有修改的意思,故重新总结下,以便自己以后查阅和复习啊。

  下面看一个例题Print Article。连续打印一段长达从i到j的的文章,需要M+sigma(sum[j] - sum[i])2的费用,求打印完这篇文章的最小费用。到底分多少次去打印,费用最低呢。dp[i]表示打印从1..i的最小费用。

那么我们有dp转移方程dp[i] = min(dp[j]+sigma(M+sum[i]-sum[j])2,dp[i]),j < i;观察一下数据量0 ≤ n ≤ 500000, 0 ≤ M ≤ 1000,50万,如果直接这样求,是o(n2)的复杂度,超时无疑,那么怎么破?dp斜率优化,如何优化?

学渣乱搞系列之dp斜率优化