记录dp[i][j]表示以第i个元素结尾,有j组的时候的最大和,那么有dp[i][j]=max{dp[k][j-1]}+sum[i-l[j]+1][i],其中k+l[j]<=i,那么这样的转移是O(n)的,为了优化,记录s[i][j]表示s[0][j]到s[i][j]中的最大dp值,那么可以在O(1)的时间内做到转移,最后可以得到一个转移方程:
dp[i][j]=s[i][j-1]+sum[i-l[j]+][i]。
注意sum数组可以用前n项和得到。
我的代码中用val直接表示前n项和。
我的代码:

本文介绍了一种使用动态规划解决分组最大和问题的方法,通过记录以特定元素结尾且包含固定数量组的最大和,利用前缀和技巧优化状态转移过程。
429

被折叠的 条评论
为什么被折叠?



