0分,样例未过
查看原帖
0分,样例未过
767155
a_small_penguin楼主2024/9/5 21:02

代码:

#include<bits/stdc++.h>
using namespace std;
int n;
int a[209];
int dp[209][209];
int dp2[209][209]; 
int s[209];
int main(){
	memset(dp,0x3f,sizeof(dp));
	memset(dp2,-1,sizeof(dp2));
	cin >> n;
	for(int i = 1;i<=n;i++){
		cin >> a[i];
		a[i+n] = a[i];
	} 
	for(int i = 1;i<=n*2;i++){
		s[i] = s[i-1] + a[i];
		dp[i][i]=0;
		dp2[i][i] = 0;
	}
	for(int len = 2;len <= n;len++){
		for(int l = 1;l+len-1<=2*n;l++){
			int r = l+len-1;
			for(int k=l;k<r;k++){
				dp[l][r] = min(dp[l][r], dp[l][k]+dp[k+1][r]+s[r]-s[l-1]);
				dp2[l][r] = max(dp[l][r], dp[l][k]+dp[k+1][r]+s[r]-s[l-1]);
			}
		}
	}
	int maxn = -1;
	int minn = 0x3f3f3f3f;
	for(int i = 1;i<=n;i++){
		maxn = max(maxn,dp2[i][i+n-1]);
		minn = min(minn,dp[i][i+n-1]);
	}
	cout << minn << "\n" << maxn;	
}
2024/9/5 21:02
加载中...