0分求调
查看原帖
0分求调
928579
WhxStar2024楼主2023/8/18 11:31
#include<bits/stdc++.h>
using namespace std;
long long dp[2001][2001],dp2[2001][2001],a[1001],sum[2001];
int main()
{
	long long n;
	cin>>n;
	for(int i=1;i<=n*2;i++)
	{
		for(int j=i+1;j<=n*2;j++)
		{
			dp2[i][j]=INT_MAX;
		}
	}
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		a[i+n]=a[i];
	} 
	for(int i=1;i<=n*2;i++)
	{
		sum[i]=sum[i-1]+a[i];
		dp[i][i]=a[i];
		dp2[i][i]=a[i];
	}
	for(int i=1;i<n*2;i++)
	{
		for(int j=i+1;j<=n*2;j++)
		{
			for(int k=i;k<j;k++)
			{
				dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]);
				dp2[i][j]=min(dp2[i][j],dp2[i][k]+dp2[k+1][j]);
			}
			dp[i][j]+=sum[j]-sum[i-1];
			dp2[i][j]+=sum[j]-sum[i-1];
		}
	}
	long long ma=0,mi=INT_MAX;
	for(int i=1;i<=n;i++)
	{
		ma=max(dp[i][i+n-1],ma);
		mi=min(dp2[i][i+n-1],mi);
	}
	cout<<mi<<endl<<ma;
	return 0;
}

2023/8/18 11:31
加载中...