为啥ans2是负数
查看原帖
为啥ans2是负数
575655
Chtholly_is_cute楼主2023/11/16 20:37
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=111*3;
int f[N][N],fw[N][N],g[N],h[N],n;
int ans=0,ans2=0x7fffffff;
int sum(int l,int r){
    return h[r]-h[l-1];
}
signed main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>g[i];
        g[n+i]=g[i];
    }
    int len=2*n-1;
    for(int i=1;i<len;i++)h[i]=h[i-1]+g[i];
    memset(fw,0x3f,sizeof fw);
    for(int i=0;i<=225;i++){
        fw[i][i]=0;
    }
    for(int i=2;i<=n;i++){
        for(int j=1;j<=len-i+1;++j){
            int r=j+i-1;
            for(int k=j;k<r;++k){
                int a=f[j][k]+f[k+1][r];
                int b=fw[j][k]+fw[k+1][r];
                if(f[j][r]<a)f[j][r]=a;
                if(fw[j][r]>b)fw[j][r]=b;
            }
            f[j][r]+=sum(j,r);
            fw[j][r]+=sum(j,r);
        }
    }
    for(int i=1;i<=n;i++){
        ans=max(ans,f[i][i+n-1]);
        ans2=min(ans2,fw[i][i+n-1]);
    }
    cout<<ans2<<endl<<ans;
}
2023/11/16 20:37
加载中...