社区讨论

求助

P1880[NOI1995] 石子合并参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lo1y9c5k
此快照首次捕获于
2023/10/23 04:57
2 年前
此快照最后确认于
2023/11/03 05:22
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
const int N = 1e7 + 104;
int c[1002][1002];
int n,a[N],f[1002][1002],sum[N],ans = 999999999;
int main(){
	cin >> n;
	for(int i = 1;i <= n;i++){
		cin >> a[i];
	}
	for(int i = n + 1;i <= 2 * n;i++){
		a[i] = a[i - n];
	}
	for(int i = 1;i <= 2 * n;i++){
		sum[i] = sum[i - 1] + a[i];
	} 
	for(int i = 1;i < n;i++){
		for(int j = 1;j <= n - i + 1;j++){
			int end = i + j - 1;
			for(int k = j;k < end;k++){
				f[i][j] = min(f[i][k] + f[k + 1][j] + sum[end] - sum[j - 1],f[i][j]);
			}
			
		}
	}
	cout << f[1][n] << endl;
	for(int i = 1;i < n;i++){
		for(int j = 1;j <= n - i + 1;j++){
			int end = i + j - 1;
			for(int k = j;k <= end;k++){
				c[i][j] = max(c[i][k] + c[k + 1][j] + sum[end] - sum[j - 1],c[i][j]);
			}
			
		}
	}
	cout << c[1][n];
}

回复

0 条回复,欢迎继续交流。

正在加载回复...