题目传送门
思路:
这道题很有趣,首先根据题目,不难判断出这是一个 d p dp dp 问题。设 d p i dp_i dpi 代表从 1 ⋯ i 1 \cdots i 1⋯i 能够得到的最大价值总和,那么 d p i = max j { d p j + v j + 1 ⋯ i } dp_i = \max_j \{dp_j + v_{j+1 \cdots i}\} dpi=maxj{ dpj+vj+1⋯i},尽管 v v v 值我们可以靠预处理前缀和 O ( 1 ) O(1) O(1) 得到,但是找 i i i 的过程仍然是 O ( n 2 ) O(n^2) O(n2) 的,这样是过不了这道题的。
考虑如何更快地进行解题,首先从这个条件入手,看题解发现,当一段长度大于 1 1 1 的区间 s > 0 s \gt 0 s>0 时,它加入答案才能获得更大的收益,否则,我们都可以通过拆的方式将它拆成长度为 1 1 1 的几个小段。因为 s < 0 s \lt 0