区间DP样例过不去求调!!!
查看原帖
区间DP样例过不去求调!!!
804607
rainygame楼主2023/4/2 10:08
#include <bits/stdc++.h>
using namespace std;
#define MAXN 201

int n, maxn, minn = 0x3f3f3f3f;
int a[MAXN], sum[MAXN];
int MAX[MAXN][MAXN], MIN[MAXN][MAXN];

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	memset(MIN, 0x3f, sizeof(MIN));
	
	cin >> n;
	for (int i=1; i<=n; i++){
		cin >> a[i];
		a[i+n] = a[i];
	}
	for (int i=1; i<=(n<<1); i++){
		MAX[i][i] = MIN[i][i] = 0;
		sum[i] = sum[i-1] + a[i];
	}
	
	for (int len=1; len<=n; len++){
		#define r (l+len-1)
		for (int l=1; l<=(n<<1); l++){
			for (int k=l; k<r; k++){
				MAX[l][r] = max(MAX[l][r], MAX[l][k]+MAX[k+1][r]+sum[r]-sum[l-1]);
				MIN[l][r] = min(MIN[l][r], MIN[l][k]+MIN[k+1][r]+sum[r]-sum[l-1]);
			}
		}
	}
	
	for (int i=1; i<=n; i++){
		maxn = max(maxn, MAX[i][i+n]);
		minn = min(minn, MIN[i][i+n]);
	}
	
	cout << maxn << '\n' << minn;
	
	return 0;
}

2023/4/2 10:08
加载中...