RE?
查看原帖
RE?
560112
__Alexander__楼主2024/6/3 16:21
#include<bits/stdc++.h>
using namespace std;
int mi[2010][2010];
int ma[2010][2010];
int n;
int a[2010];
int vis[2010][2010];
int s[2010];
int main(){
    memset(mi,0x3f,sizeof(mi));
    cin>>n;
    for (int i=1;i<=n;i++){
        cin>>a[i];
        a[i+n]=a[i];
        s[i]=s[i-1]+a[i];
        vis[i][i]=i;
    }
    for (int i=n+1;i<=2*n;i++){
        s[i]=s[i-1]+a[i];
        vis[i][i]=i;
    }
    for (int i=2*n-1;i;i--){
        for (int j=i+1;j<=2*n;j++){
            int mini=0,cp=0x3f3f3f3f;
            ma[i][j]=max(ma[i][j-1],ma[i+1][j])+s[j]-s[i-1];
            for (int k=mi[i][j-1];k<=mi[i+1][j];k++){
                int lsr=mi[i][k]+mi[k+1][j]+(s[j]-s[i-1]);
                if (lsr<cp){
                    cp=lsr;
                    mini=k;
                }
                vis[i][j]=mini;
                mi[i][j]=cp;
            }
        }
    }
    int maxn=0,minn=0x3f;
    for (int i=1;i<=n;i++){
        maxn=max(maxn,ma[i][i+n-1]);
        minn=min(minn,mi[i][i+n-1]);
    }
    cout<<minn<<endl<<maxn<<endl;
    return 0;
}
2024/6/3 16:21
加载中...