社区讨论

萌新求助!!!

P3628[APIO2010] 特别行动队参与者 4已保存回复 5

讨论操作

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

当前回复
5 条
当前快照
1 份
快照标识符
@mi7cj6dh
此快照首次捕获于
2025/11/20 19:26
4 个月前
此快照最后确认于
2025/11/20 19:26
4 个月前
查看原帖
谁能告诉我这题我的暴力哪里写伪了。我习惯先写个暴力DP再去优化,可是暴力WA on test 4我有点怕怕,不知道哪里写错了,可以帮菜鸡看看么,不会花费大佬你们太多时间的QAQ
CPP
#include <bits/stdc++.h>
#define int long long
#define db double
using namespace std;

int read() {
	int x = 0, f = 1; char ch = getchar();
	while (! isdigit(ch)) {if (ch == '-') f = -1; ch = getchar();}
	while (  isdigit(ch)) x = x * 10ll + ch - 48, ch = getchar();
	return x * f;
}

const int N = 2e6 + 5;

int n, sum[N], a, b, c, dp[N];

int Solve(int x) {
	return a*x*x + b*x + c;
}

signed main(void) {
	n = read(); a = read(); b = read(); c = read(); sum[0] = 0;
	for (int i = 1; i <= n; ++ i) sum[i] = sum[i - 1] + read();
	for (int i = 1; i <= n; ++ i) {
		for (int j = 0; j < i; ++ j) {
			dp[i] = max(dp[i], dp[j] + Solve(sum[i] - sum[j]));
		}
	}
	printf("%lld\n", dp[n]);
	return 0;
}

回复

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

正在加载回复...