性感DP, 玄关求调
查看原帖
性感DP, 玄关求调
1305692
xiangixuan楼主2025/1/2 20:41

字典序不对QWQ

输入:

10 4
1 1 1 1 1 1 1 1 1 1

答案:

1 1
2 4
5 7
8 10

我的:

1 2
3 4
5 7
8 10

代码:

#include<bits/stdc++.h>
#define N 501
using namespace std;
int m, K, sum[N], p[N][N][N], f[N][N];
signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    memset(f, 0x3f, sizeof f);
    cin >> m >> K;
    for (int i=1; i<=m; ++i) cin >> sum[i], sum[i]+=sum[i-1];
    for (int i=1; i<=m; ++i) f[i][1]=sum[i];
    for (int i=1; i<=m; ++i)
        for (int j=1; j<=K; ++j)
            for (int k=1; k<=i; ++k) {
                p[i][j][j]=i;
                if (max(f[k][j-1], sum[i]-sum[k])<f[i][j]) {
                    f[i][j]=max(f[k][j-1], sum[i]-sum[k]);
                    for (int u=1; u<=K; ++u) p[i][j][u]=p[k][j-1][u];
                    p[i][j][j]=i;
                }
            }
    cout << 1 << ' ';
    for (int i=1; i<K; ++i)
        cout << p[m][K][i] << '\n' << p[m][K][i]+1 << ' ';
    cout << m << '\n';
    return 0;
}
2025/1/2 20:41
加载中...