3,4wa求助
查看原帖
3,4wa求助
427186
初二达2张晚渔楼主2021/5/5 18:42
#include<bits/stdc++.h>
using namespace std;
int a[101],sum[101],f[202][202];

int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		sum[i]=sum[i-1]+a[i];
	}
	for(int i=n+1;i<=2*n;i++)
	{
		a[i]=a[i-n];
		sum[i]=sum[i-1]+a[i];
	}
	
	
	
	for(int len=2;len<=n;len++)
	{
		for(int i=1;i<=2*n;i++)
		{
			int j=i+len-1;
			f[i][j]=1000000;
			for(int k=i;k<j;k++)
			{
				if(j>2*n)continue;
				f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]+sum[j]-sum[i-1]);	
				
			}
		}
	}
	int ans1=1000000;
	for(int i=1;i<=n;i++)
	{
		ans1=min(ans1,f[i][i+n-1]);

	}
	
	
	for(int i=1;i<=2*n;i++)f[i][i]=0;
	for(int len=2;len<=n;len++)
	{
		for(int i=1;i<=2*n;i++)
		{
			int j=i+len-1;
			for(int k=i;k<j;k++)
			{
				if(j>2*n)continue;
				f[i][j]=max(f[i][j],f[i][k]+f[k+1][j]+sum[j]-sum[i-1]);	
			}
		}
	}
	int ans2=0;
	for(int i=1;i<=n;i++)ans2=max(ans2,f[i][i+n-1]);
	cout<<ans1<<endl<<ans2;
	return 0;
}
2021/5/5 18:42
加载中...