P1880求助
查看原帖
P1880求助
352913
123xiayicheng楼主2022/11/5 14:46

爆0了

#include <bits/stdc++.h>
using namespace std;
long long a[210],dp[210][210],dp1[210][210]= {0};
long long sum[110];
int main()
{
    int n;
    cin>>n;
    memset(dp,0,sizeof(dp));
    memset(dp1,63,sizeof(dp1));
//    dp1[0][0]=0;
    for(int i=1; i<=n; i++)
    {
        cin>>a[i];
        a[i+n]=a[i];
        if(i==1)
            sum[i]=a[i];
        else
            sum[i]=sum[i-1]+a[i];
    }
    for(int i=0; i<=200; i++) dp[i][i] = 0;
    for(int i=1; i<=n; i++)
    {
        for(int l=1; l<2*n; l++)
        {
            long long r=i+l-1;

            for(int k=l; k<r and k<=2*n-1; k++)
            {
                dp[l][r]=max(dp[l][r],dp[l][k]+dp[k+1][r]+sum[r]-sum[l-1]);
                dp1[l][r]=min(dp1[l][r],dp1[l][k]+dp1[k+1][r]+sum[r]-sum[l-1]);
            }
        }
    }
//    for(int i=1; i<=n; i++)
//    {
//        for(int j=1; j<=n; j++)
//            cout<<dp1[i][i+n-1]<<" ";
//        cout<<endl;
//    }
    long long ma=-4611686018427387904,mi=4611686018427387904;
    for(int i=1; i<=n; i++)
    {
        ma=max(ma,dp[i][i+n-1]);
        mi=min(mi,dp1[i][i+n-1]);
    }
    cout<<mi<<endl<<ma;
    return 0;
}
2022/11/5 14:46
加载中...