蒟蒻求助
查看原帖
蒟蒻求助
540177
wyf_sinon楼主2023/10/13 17:58

以下为蒟蒻代码

//断环成链
#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;
}
2023/10/13 17:58
加载中...