输出0 0
查看原帖
输出0 0
209758
AdGats楼主2021/1/16 10:09

代码如下:

#include<bits/stdc++.h>
using namespace std;
const int N=205;
int num[N],f1[N][N],f2[N][N],sum[N],ans1=1e9,ans2=-1e9;
int read(){
	int a=0;
	char c=getchar();
	while(c<'0'||c>'9')	c=getchar();
	while(c>='0'&&c<='9')	a=a*10+c-'0',c=getchar();
	return a;
}
int main(){
	int n,r;
	cin>>n;
	for(int i=1;i<=n;i++)
		num[i]=read(),num[i+n]=num[i];
	for(int i=1;i<=n*2;i++) sum[i]=sum[i-1]+num[i];
	for(int i=2;i<=n;i++)
		for(int l=i+1;l<=2*n-i+1;l++){
			r=i+l-1;	
			for(int k=l;k<r;k++){
				f1[l][r]=min(f1[l][k]+f1[k+1][r]+sum[r]-sum[l-1],f1[l][r]);
				f2[l][r]=max(f2[l][k]+f2[k+1][r]+sum[r]-sum[l-1],f2[l][r]);	
			}
		}
	for(int i=1;i<=n;i++) ans1=min(ans1,f1[i][i+n-1]),ans2=max(ans2,f2[i][i+n-1]);
	cout<<ans1<<"\n"<<ans2;
	return 0;
}
2021/1/16 10:09
加载中...