求助,40tips,WA了三个点qaq
查看原帖
求助,40tips,WA了三个点qaq
574779
esn_1874楼主2022/3/20 17:18
#include<iostream>
#include<cstring>
using namespace std;
const int maxn = 501;
int n,a[maxn],f[maxn][maxn],s[maxn],t[maxn][maxn];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        a[n+i]=a[i];
    }
    n*=2;
    for(int i=1;i<=n;i++){
        s[i]=s[i-1]+a[i];
    }
    memset(f,127,sizeof(f));
    for(int i=1;i<=n;i++){
            f[i][i]=0;
    }
    for(int i=1;i<n;i++){
        for(int j=1;j<=n-i;j++){
            for(int k=j;k<j+i;k++){
                f[j][j+i]=min(f[j][j+i],f[j][k]+f[k+1][j+i]+s[j+i]-s[j-1]);
                t[j][j+i]=max(t[j][j+i],t[j][k]+t[k+1][j+1]+s[j+i]-s[j-1]);
            }
        }
    }
    int ans=1<<30;
    int k=0;
    for(int i=1;i<=n/2;i++){
        ans=min(ans,f[i][i+n/2-1]);
        k=max(k,t[i][i+n/2-1]);
    }
    cout<<ans<<endl;
    cout<<k<<endl;
    return 0;
}

各位大佬,代码求调,最大值算不对,WA了中间三个点

2022/3/20 17:18
加载中...