20pts求条(急)
查看原帖
20pts求条(急)
1048914
cgy20140502楼主2025/1/14 12:12
#include <bits/stdc++.h>
using namespace std;
int n,a[10005],cost[10005],dp[1005][1005],dp2[1005][1005] = {-0x3f};
int main(){
	memset(dp,0x3f,sizeof(dp));
	memset(dp2,-0x3f,sizeof(dp2));
	cin >> n;
	for (int i = 1;i <= n;i++){
		cin >> a[i];
		a[n+i] = a[i];
	}
	for (int i = 1;i <= n*2;i++){
		cost[i] = cost[i-1]+a[i];
		dp[i][i] = 0,dp2[i][i] = 0;
	}
	n *= 2;
	int j;
	for (int l = 2;l <= n;l++){
		for (int i = 1;i <= n - l + 1;i++){
			j = i + l - 1;
			for (int k = i;k <= j;k++){
				dp[i][j] = min(dp[i][j],dp[i][k] + dp[k+1][j] + cost[j] - cost[i-1]);
				dp2[i][j] = max(dp2[i][j],dp2[i][k] + dp2[k+1][j] + cost[j] - cost[i-1]);
			}
		}
	}
	cout << dp[1][n/2] - 1 << "\n" << dp2[1][n/2];
	return 0;
}

给理由,别直接给代码.
@清空

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