为什么两个答案总是相同的?
查看原帖
为什么两个答案总是相同的?
800543
NirvanaCeleste楼主2024/7/20 10:40
#include <bits/stdc++.h>
using namespace std;
int n;
int a[220];
long long f[220][220],w[220][220],sum[220];
long long ansmin = 0x3f3f3f3f3f,ansmax;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++) scanf("%d",&a[i]),a[i+n] = a[i];
	for(int i=1;i<=2*n;i++) sum[i] = sum[i-1] + a[i];
	for(int i=1;i<=2*n;i++){
		for(int j=1;j<=2*n;j++){
			if(i != j) f[i][j] = 0x3f3f3f3f3f;
		}
	}
	for(int len=2;len<=n;len++){
		for(int l=1;l<=2*n-len+1;len++){
			int r = l+len-1;
			for(int k=l;k<r;k++){
				f[l][r] = min(f[l][r],f[l][k] + f[k+1][r] + sum[r] - sum[l - 1]);
				w[l][r] = max(w[l][r],w[l][k] + w[k+1][r] + sum[r] - sum[l - 1]);
			}
		}
	}
	for(int l=1;l<=n;l++){		
		int r = l+n-1;
		ansmin = min(ansmin,f[l][r]);
		ansmax = max(ansmax,w[l][r]);
	}
	cout<<ansmin<<endl<<ansmax;
	return 0;
}
2024/7/20 10:40
加载中...