首先,我们发现这个数据范围明显就是 (O(nk)) 的。
那么我们可以考虑直接 dp 了,设 (dp[i][j]) 为前 (i) 个数划分完毕,划分了 (j) 次,最后一次划分在 (i) 位置的最大贡献。
那么我们的柿子很明显就是 (dp[i][k]=max{dp[j][k-1]+(sum[j]*(sum[i]-sum[j]))}) 。
然后就是一个单调队列优化 dp 了,其实数据范围小一点也可以李超树的 。
代码:
待补。
首先,我们发现这个数据范围明显就是 (O(nk)) 的。
那么我们可以考虑直接 dp 了,设 (dp[i][j]) 为前 (i) 个数划分完毕,划分了 (j) 次,最后一次划分在 (i) 位置的最大贡献。
那么我们的柿子很明显就是 (dp[i][k]=max{dp[j][k-1]+(sum[j]*(sum[i]-sum[j]))}) 。
然后就是一个单调队列优化 dp 了,其实数据范围小一点也可以李超树的 。
代码:
待补。