40求调orz
查看原帖
40求调orz
1445122
sixinzhong楼主2024/11/25 23:12

有大佬能帮忙调一下吗,万分感激!!!

#include<bits/stdc++.h>
using namespace std;

int a[405];
int dp[2][405][405];//0:max 1:min
int sa[405];
int n;

int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        a[n+i]=a[i];
    }
    memset(dp[0],0x80,sizeof(dp[0]));
    memset(dp[1],0x3f,sizeof(dp[1]));
    for(int i=1;i<=2*n;i++){
        for(int j=0;j<=1;j++){
            dp[j][i][i+1]=a[i];
        }
        sa[i]=sa[i-1]+a[i];
    }
    for(int i=2;i<=n;i++){
        for(int l=1;l<=n;l++){
            int r=l+i;
            for(int j=l+1;j<r;j++){
                dp[0][l][r]=max(dp[0][l][r],dp[0][l][j]+dp[0][j][r]+sa[r-1]-sa[l-1]);
                dp[1][l][r]=min(dp[1][l][r],dp[1][l][j]+dp[1][j][r]+sa[r-1]-sa[l-1]);
            }
        }
    }
    int ansx=-1;
    int ansn=0x7f7f7f7f;
    for(int l=1;l<=n;l++){
        ansx=max(ansx,dp[0][l][l+n]);
        ansn=min(ansn,dp[1][l][l+n]);
    }
    cout<<ansn-sa[n]<<endl<<ansx-sa[n]<<endl;
    return 0;
}
2024/11/25 23:12
加载中...