最小值不对,求助
查看原帖
最小值不对,求助
184525
lnhrl楼主2021/5/29 19:58

rt

为啥最小值会差那么一点啊

#include<iostream>
#include<cstdio>
using namespace std;
int fmax[500][500],fmin[500][500],s[500],a[500],n;
int sum(int l,int r)
{
	return s[r]-s[l-1];
}
void input()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		a[i+n]=a[i];
		s[i]=s[i-1]+a[i];
	}
	for(int i=n+1;i<=2*n;i++)
	{
		s[i]=s[i-1]+a[i];	
	}
}
void dp()
{
	for(int x=1;x<n;x++)
	{
		for(int i=1,j=i+x;j<2*n;i++,j=i+x)
		{
			fmin[i][j]=0x3f3f3f;
			for(int k=i;k<j;k++)
			{
				fmax[i][j]=max(fmax[i][j],fmax[i][k]+fmax[k+1][j]+sum(i,j));
				fmin[i][j]=min(fmin[i][j],fmin[i][k]+fmin[k+1][j]+sum(i,j));
			}
		}
	}
}
void output()
{
	int min_=0x3f3f3f,max_;
	for(int i=1;i<=n;i++)
	{
		max_=(max_,fmax[i][i+n-1]);
		min_=(min_,fmin[i][i+n-1]);
	}
	cout<<min_<<endl<<max_;
}
int main()
{
	input();
	dp();
	output();
	return 0;
}

谢谢各位了

2021/5/29 19:58
加载中...