求助
查看原帖
求助
385952
f2_longtian楼主2022/12/25 16:53
#include<bits/stdc++.h>
using namespace std;
int sum[1010],a[1010],f[1010][1010],_f[1010][1010];
int main(){
	int n,ans1=2147483647,ans2=-2147483647;
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	for(int i=1;i<=n;i++){
		a[n+i]=a[i-1];
		memset(sum,0,sizeof(sum));
		for(int j=i;j<=n+i-1;j++){
			sum[j]=sum[j-1]+a[j];
		}
		for(int j=i;j<=n+i-1;j++){
			f[j][j]=0;
			_f[j][j]=0;
		}
		for(int l=1;l<=n-1;l++){
			for(int j=i;j<=n+i-1-l;j++){
				int k=j+l;
				for(int w=j;w<=k-1;w++){
					f[j][k]=min(f[i][j],f[j][w]+f[w+1][k]);
					_f[j][k]=max(_f[i][j],_f[j][w]+f[w+1][k]);
				}
				f[j][k]+=sum[j]-sum[k-1];
				_f[j][k]+=sum[j]-sum[k-1];
			}
		}
		ans1=min(ans1,f[i][n+i-1]);
		ans2=max(ans2,_f[i][n+i-1]);
	}
	cout<<f[1][n]<<'\n'<<_f[1][n]; 
	return 0; 
}
2022/12/25 16:53
加载中...