社区讨论
求助
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 条回复,欢迎继续交流。
正在加载回复...