蒟蒻20分求助!!!
查看原帖
蒟蒻20分求助!!!
224045
包包楼主2022/8/12 17:08
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<queue>
#include<iomanip>
#include<algorithm>
using namespace std;
int n,a[410],s[410][410],dmaxn[410][410],dminn[410][410],maxn=-0x7ffffff,minn=0x7fffffff;
int main()
{
	freopen("shitou.in","r",stdin);
	freopen("shitou.out","w",stdout);
	cin>>n;
	memset(dmaxn,-1,sizeof(dmaxn));
	memset(dminn,0x3f,sizeof(dminn));
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
		s[i][i]=a[i];
		dmaxn[i][i]=0;
		dminn[i][i]=0;
	}
	int c;
	for(int i=1;i<=n;i++)
		for(int j=i+1;j<=n;j++)
			s[i][j]=s[i][j-1]+a[j];
	for(int i=n;i>=1;i--)
		for(int j=i-1;j>=1;j--)
			s[i][j]=s[i][n]+s[1][j];
	for(int i=2;i<=n;i++) dminn[i][i-1]=s[i-1][i];
	dminn[n][1]=dmaxn[n][1]=s[n][1];
	for(int i=n;i>=1;i--)
		for(int j=(i+1)%n;j<=n;j++)
		{
			for(int k=i;k<j;k++)
			{
				dminn[i][j]=min(dminn[i][j],dminn[i][k]+dminn[k+1][j]+s[i][j]);
				dmaxn[i][j]=max(dmaxn[i][j],dmaxn[i][k]+dmaxn[k+1][j]+s[i][j]);		
			}
			//cout<<i<<" "<<j<<" "<<dminn[i][j]<<endl;
			//cout<<i<<" "<<j<<" "<<dmaxn[i][j]<<endl;
		}
	for(int i=n;i>=1;i--)
		for(int j=i-1;j>=1;j--)
		{
			int k=i;
			int x=i-j;
			int kk=0;
			while(x--)
			{
				kk=0;
				if(k==n)
				{
					dminn[i][j]=min(dminn[i][j],0+dminn[1][j]+s[i][j]);
					kk=1;
					k=(k+1)%n;
				}
				if(kk=0)
				{
					dminn[i][j]=min(dminn[i][j],dminn[i][k+1]+dminn[k][j]+s[i][j]);
					//cout<<dminn[i][j]<<"="<<dminn[i][k+1]<<"+"<<dminn[k][j]<<"+"<<s[i][j]<<endl;
					k++;
				} 
				else
				{
					dminn[i][j]=min(dminn[i][j],dminn[i][k]+dminn[k+1][j]+s[i][j]);
					//cout<<dminn[i][j]<<"="<<dminn[i][k]<<"+"<<dminn[k+1][j]<<"+"<<s[i][j]<<endl;
				}
			}
			//cout<<i<<" "<<j<<" "<<dminn[i][j]<<endl;
		}		
	for(int k=1;k<n;k++)
	{
		dminn[1][n]=min(dminn[1][n],dminn[n][k]+dminn[k+1][n-1]+s[1][n]);
		//cout<<dminn[1][n]<<"="<<dminn[n][k]<<"+"<<dminn[k+1][n-1]<<"+"<<s[1][n]<<endl;
	}
	cout<<dminn[1][n]<<endl;
	cout<<dmaxn[1][n]<<endl;
	fclose(stdin);
	fclose(stdout);
	return 0;
}
/*4
4 5 9 4*/
2022/8/12 17:08
加载中...