求调,40pts
查看原帖
求调,40pts
1126733
lxc129楼主2025/1/14 21:12
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef string str;
typedef double dou;
typedef unsigned un;
ll n,a[201],f[201][201],sum[201],ansmax,ansmin=1e18;
int main(){
	cin>>n;
	for (ll i=1;i<=n;i++) cin>>a[i],sum[i]=sum[i-1]+a[i];
	for (ll i=n+1;i<=2*n;i++) a[i]=a[i-n],sum[i]=sum[i-1]+a[i];
	for (ll i=1;i<=2*n;i++){
		f[i][i]=0;
		for (ll j=i+1;j<=2*n;j++){
			ll v=f[i][i]+f[i+1][j]+sum[j]-sum[i-1];
			for (ll k=i;k<j;k++) v=max(v,f[i][k]+f[k+1][j]+sum[j]-sum[i-1]);
			f[i][j]=v;
		}
	}
	for (ll i=1;i<=n;i++) ansmax=max(ansmax,f[i][i+n-1]);
	for (ll i=1;i<=2*n;i++){
		f[i][i]=0;
		for (ll j=i+1;j<=2*n;j++){
			ll v=f[i][i]+f[i+1][j]+sum[j]-sum[i-1];
			for (ll k=i;k<j;k++) v=min(v,f[i][k]+f[k+1][j]+sum[j]-sum[i-1]);
			f[i][j]=v;
		}
	}
	for (ll i=1;i<=n;i++) ansmin=min(ansmin,f[i][i+n-1]);
	cout<<ansmin<<'\n'<<ansmax;
}

2025/1/14 21:12
加载中...