社区讨论
求助
P1880[NOI1995] 石子合并参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @m3r2n8tf
- 此快照首次捕获于
- 2024/11/21 16:49 去年
- 此快照最后确认于
- 2025/11/04 14:16 4 个月前
样例最大值过了,最小值没过
CPP#include <bits/stdc++.h>
using namespace std;
int a[105], sa[105], dp1[105][105], dp2[105][105];
int main()
{
int n;
cin >> n;
memset(dp1, 127 / 2, sizeof(dp1));
for (int i = 1; i <= n; i++) cin >> a[i], sa[i] = sa[i - 1] + a[i], dp1[i][i] = 0;
for (int i = n - 1; i >= 1; i--)
{
for (int j = i + 1; j <= n; j++)
{
for (int k = i; k <= j - 1; k++)
{
dp1[i][j] = min(dp1[i][j], dp1[i][k] + dp1[k + 1][j] + sa[j] - sa[i - 1]);
dp2[i][j] = max(dp2[i][j], dp2[i][k] + dp2[k + 1][j] + sa[j] - sa[i - 1]);
}
}
}
cout << dp1[1][n] << endl << dp2[1][n] << endl;
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...