萌新泪眼汪汪求条简单红题(玄小号一关
  • 板块灌水区
  • 楼主mediocre_
  • 当前回复6
  • 已保存回复6
  • 发布时间2024/10/7 10:50
  • 上次更新2024/10/7 12:20:09
查看原帖
萌新泪眼汪汪求条简单红题(玄小号一关
565707
mediocre_楼主2024/10/7 10:50
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 6;
int n, a[N], dp[3][N][2];
int dfs(int x, int s, int pre) {
	if (s < 0) return INT_MIN;
	if (dp[s][x][pre] != INT_MIN) return dp[s][x][pre];
	if (x == n + 1) return (!s) ? 0 : INT_MIN;
	int ans = INT_MIN;
	if (!pre) ans = max(ans, dfs(x + 1, s - 1, 1));
	else ans = max(ans, dfs(x + 1, s, 1));
	ans = max(ans, dfs(x + 1, s, 0) + a[x]);
	return dp[s][x][pre] = ans;
}
int main() {
	// freopen("P1121_2.in", "r", stdin);
	scanf("%d", &n);
	for (int i = 1; i <= n; ++i)
		scanf("%d", &a[i]), dp[0][i][0] = dp[0][i][1] = dp[1][i][0] = dp[1][i][1] = dp[2][i][0] = dp[2][i][1] = INT_MIN;
	printf("%d", dfs(1, 2, 0));
	return 0;
}

第二个测试点WA了,看了一下正确输出是200我的输出是0

2024/10/7 10:50
加载中...