70求助QAQ
查看原帖
70求助QAQ
763215
foglake楼主2023/7/19 14:03
#include <bits/stdc++.h>
using namespace std;
int dp[2][3][2], num[100005][3], ans;
int main() {
	int n;
	scanf("%d", &n);
	for (int i = 1; i <= n; i++)
		scanf("%d%d%d", &num[i][0], &num[i][1], &num[i][2]);
	for (int k = 0; k < 2; k++) {
		memset(dp, 0, sizeof(dp));
		dp[1][k][0] = dp[1][k][1] = num[1][k];
		for (int i = 2; i <= n; i++) {
			bool now = i % 2;
			dp[now][0][0] = max(dp[!now][1][1], dp[!now][2][1]) + num[i][0];
			dp[now][1][0] = dp[!now][2][1] + num[i][1];
			dp[now][1][1] = dp[!now][0][0] + num[i][1];
			dp[now][2][1] = max(dp[!now][1][0], dp[!now][0][0]) + num[i][2];
		}
		for (int i = 0; i < k; i++) ans = max(ans, dp[n % 2][i][0]);
		for (int i = 2; i > k; i--) ans = max(ans, dp[n % 2][i][1]);
	}
	printf("%d", ans);
}
2023/7/19 14:03
加载中...