(未写)tyvj-1309- 刷题的玖君

传送门:http://new.tyvj.cn/Problem_Show.aspx?id=1309

 

能把方程和一点优化写出来~。但是还是不够细心哪
方程:
f[i]=min(f[k]+t[k+1,i]*i)+(n-i)*s;

预处理出 t[] 和 (n-i)*k 存好

然后就是斜率优化

如果k决策比j觉得更优
化成等式就是
f[k]+t[k+1,i]*i<f[j]+t[j+1,i]*i;
( f[k]-f[j] ) / ( t[j+1,i]-t[k+1,i] ) < i
满足上面这个等式

我们知道 如果存在一个决策k比j更优 那么以后的寻找min就没必要再遍历j决策了
那么我们在循环时候 维护一个最优解k就可以了 貌似可以达到O(n)

posted on 2012-10-22 21:37  AlphaX  阅读(197)  评论(0编辑  收藏  举报

导航