洛谷:石子合并

洛谷的样例:

4
4 5 9 4
43
54

但本题的样例输出却是:

44
54

洛谷 AC 的代码却在本题 00 分全 WA,疑似数据有误。

#include <bits/stdc++.h>
using namespace std;
int a[206], s[206], f[206][206], f1[206][206], n, ans, ans1 = 1e9;
int main() {
	freopen("stone.in", "r", stdin);
	freopen("stone.out", "w", stdout);
	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++) {
		s[i] = s[i - 1] + a[i];
	}
	for (int len = 2; len <= n; len++) {
		for (int i = 1; i + len - 1 <= n + n; i++) {
			int u = i + len - 1;
			f1[i][u] = 1e9;
			for (int k = i; k < u; k++) {
				f[i][u] = max(f[i][u], f[i][k] + f[k + 1][u] + s[u] - s[i - 1]);
				f1[i][u] = min(f1[i][u], f1[i][k] + f1[k + 1][u] + s[u] - s[i - 1]);
			}
		}
	}
	for (int i = 1; i < n; i++) {
		ans = max(ans, f[i][i + n - 1]);
		ans1 = min(ans1, f1[i][i + n - 1]);
	}
	cout << ans1 << "\n" << ans;
	return 0;
}

0 comments

No comments so far...

Information

ID
1157
Time
1000ms
Memory
256MiB
Difficulty
7
Tags
(None)
# Submissions
63
Accepted
15
Uploaded By