算法-dp斜率优化 + 题解-[APIO2014]序列分割

算法-dp斜率优化

题解-[APIO2014]序列分割

个人认为斜率优化还是很玄学的,例题:

[APIO2014]序列分割

给你一个长度为 n n 的序列 a 1 , a 2 , . . . , a n a_1,a_2,...,a_n 。你可以切 k k 刀,每一刀可以把某一段序列切成两段,然后获得两段和成绩的收益。最后求最大收益和得到最大收益的切割方案。

首先证明,切的顺序不影响结果。设序列为连着的 a , b , c a,b,c 三段。三段的和分别为 A , B , C A,B,C

如果先切开 a b , c a|b,c 再切开 a b c a|b|c ,获益为 A ( B + C ) + B C = A B + A C + B C A(B+C)+BC=AB+AC+BC
如果先切开 a , b c a,b|c 再切开 a b c a|b|c ,获益为 ( A + B ) C + A B = A C + B C + A B (A+B)C+AB=AC+BC+AB

所以以此类推,切割的顺序不影响最终收益大小。

然后开始 dp \texttt{dp} f i , j f_{i,j} 表示前 i i 个数切 j j

未完待续

发布了28 篇原创文章 · 获赞 66 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/KonnyWen/article/details/104379846