90分 wa
查看原帖
90分 wa
1397811
bangke楼主2024/7/25 16:47
#include bits/stdc++.h>
using namespace std;

const int MAXN = 300;
int stones[MAXN];
int prefixSum[MAXN];
int dp[MAXN][MAXN];

int main() {
    int N;
    cin >> N;

    for (int i = 1; i <= N; ++i) {
        cin >> stones[i];
    }

    prefixSum[0] = 0;
    for (int i = 1; i <= N; ++i) {
        prefixSum[i] = prefixSum[i - 1] + stones[i];
    }

    for (int i = 1; i <= N; ++i) {
        for (int j = 1; j <= N; ++j) {
            dp[i][j] = (i == j) ? 0 : INT_MAX;
        }
    }

    for (int length = 2; length <= N; ++length) {
        for (int i = 1; i + length - 1 <= N; ++i) {
            int j = i + length - 1;
            for (int k = i; k < j; ++k) {
                dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + prefixSum[j] - prefixSum[i - 1]);
            }
        }
    }

    cout << dp[1][N] << endl;

    return 0;
}
2024/7/25 16:47
加载中...