跳至主要內容

划分型 DP

小于 1 分钟

划分型 DP

题目难度
2478. 完美分割的方案数open in new window困难方案数
3077. K 个不相交子数组的最大能量值open in new window困难不 需要覆盖整个数组

模板

3077. K 个不相交子数组的最大能量值

public class Solution3077 {
    public long maximumStrength(int[] nums, int k) {
        int n = nums.length;
        long[] ps = new long[n + 1];
        for (int i = 0; i < n; i++) {
            ps[i + 1] = ps[i] + nums[i];
        }

        long[][] f = new long[k + 1][n + 1];
        for (int i = 1; i <= k; i++) {
            long w = (i % 2 > 0 ? 1 : -1) * (k - i + 1);

            long mx = Long.MIN_VALUE;
            f[i][i - 1] = mx;
            for (int j = i; j < n - k + i + 1; j++) {
//                for (int L = i - 1; L <= j - 1; L++) {
//                    mx = Math.max(mx, f[i - 1][L] + (ps[j] - ps[L]) * w);
//                }
                mx = Math.max(mx, f[i - 1][j - 1] - ps[j - 1] * w);

                f[i][j] = Math.max(f[i][j - 1], ps[j] * w + mx);
            }
        }
        return f[k][n];
    }
}

(全文完)