以下为蒟蒻代码
//断环成链
#include<bits/stdc++.h>
using namespace std;
const int N=205;
int n,ans;
int a[N],sum[N],f1[N][N],f2[N][N];
int main()
{
memset(f1,0,sizeof f1);
memset(f2,0x3f,sizeof f2);
cin>>n;
for(int i=1;i<=n;i++) { cin>>a[i];a[i+n]=a[i];f1[i][i]=0;f2[i][i]=0;f1[i+n][i]=0;f2[i+n][i]=0; }
for(int i=1;i<=2*n;i++) sum[i]=sum[i-1]+a[i];
for(int len=2;len<=n;len++)
{
for(int l=1 ; l+len-1<=2*n ; l++ )
{
int r=l+len-1;
for(int k=l;k<r;k++)//决策
{
int m=f1[l][k]+f1[k+1][r];
if(f1[l][r]<m) f1[l][r]=m;
int mx=f2[l][k]+f2[k+1][r];
if(f2[l][r]>mx) f2[l][r]=mx;
}
f1[l][r]+=sum[r]-sum[l-1];
f2[l][r]+=sum[r]-sum[l-1];
}
}
ans=1e9;
for(int i=1;i<n;i++) ans=min(ans,f2[i][i+n-1]);
cout<<ans<<endl;
for(int i=1;i<n;i++) ans=max(ans,f1[i][i+n-1]);
cout<<ans<<endl;
}