1 条题解

  • 1
    @ 2025-6-6 21:58:40

    直接上代码

    #include
    
    using namespace std;
    
    const int N = 105;
    
    int a[N], sum[N], dp1[N][N], dp2[N][N];
    
    int main() {
    
    int n; cin >> n;
    
    memset(dp1, 0x3f, sizeof dp1);
    
    memset(dp2, -0x3f, sizeof dp2);
    
    for (int i = 1; i <= n; i++) {
    
        cin >> a[i];
    
        sum[i] = sum[i - 1] + a[i];
    
        dp1[i][i] = dp2[i][i] = 0;
    
    }
    
    for (int len = 2; len <= n; len++) {
    
        for (int l = 1; l + len - 1 <= n; l++) {
    
            int r = l + len - 1;
    
            for (int k = l; k < r; k++) {
    
                dp1[l][r] = min(dp1[l][r], dp1[l][k] + dp1[k + 1][r] + sum[r] - sum[l - 1]);
    
                dp2[l][r] = max(dp2[l][r], dp2[l][k] + dp2[k + 1][r] + sum[r] - sum[l - 1]);
    
             }
    
        }
    
    }
    
    cout << dp1[1][n] << endl << dp2[1][n];
    
    return 0;
    }
    
    • 1

    信息

    ID
    122
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    (无)
    递交数
    121
    已通过
    57
    上传者