算法-dp斜率优化
题解-[APIO2014]序列分割
个人认为斜率优化还是很玄学的,例题:
[APIO2014]序列分割
给你一个长度为
n 的序列
a1,a2,...,an。你可以切
k 刀,每一刀可以把某一段序列切成两段,然后获得两段和成绩的收益。最后求最大收益和得到最大收益的切割方案。
首先证明,切的顺序不影响结果。设序列为连着的
a,b,c 三段。三段的和分别为
A,B,C。
如果先切开
a∣b,c 再切开
a∣b∣c,获益为
A(B+C)+BC=AB+AC+BC。
如果先切开
a,b∣c 再切开
a∣b∣c,获益为
(A+B)C+AB=AC+BC+AB。
所以以此类推,切割的顺序不影响最终收益大小。
然后开始
dp,
fi,j 表示前
i 个数切
j 刀
未完待续