求调,到底是为什么???
查看原帖
求调,到底是为什么???
865793
better_Z楼主2024/7/23 00:50
#include<iostream>
#include<cstring>
using namespace std;
#define maxn 210
int a[maxn],f[maxn][maxn],g[maxn][maxn],m[maxn][maxn],sum[maxn];
int n;
int main(){
    memset(g,0x3f,sizeof(g));
    //memset(f,-0x3f,sizeof(f));
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        a[i+n]=a[i];
    }
    for(int i=1;i<=2*n;i++){
        sum[i]=sum[i-1]+a[i];
        f[i][i]=g[i][i]=a[i],m[i][i]=i;
    }
    for(int l=1;l<n;l++){
        for(int i=1,j=l+1;j<=2*n;i++,j++){
            f[i][j]=max(f[i-1][j],f[i][j-1])+sum[j]-sum[i-1];
            for(int k=m[i][j-1];k<=m[i+1][j];k++){
                if(g[i][j]>g[i][k]+g[k+1][j]+sum[j]-sum[i-1]){
                    g[i][j]=g[i][k]+g[k+1][j]+sum[j]-sum[i-1];
                    m[i][j]=k;
                }
            }
        }
    }
    int mx=-9999,mn=9999;
    for(int i=1;i<=n;i++){
        mx=max(mx,f[i][i+n-1]);
        mn=min(mn,g[i][i+n-1]);
    }
    cout<<mn<<endl;
    cout<<mx;
    return 0;
}
2024/7/23 00:50
加载中...