百練 4150: 上機

dp

#define _CRT_SECURE_NO_WARNINGS
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;

const int N = 10000 + 5;

int a[N], b[N], c[N], dp[N][4];

int main() {
	int n; scanf("%d", &n);
	for (int i = 1; i <= n; i++)
		scanf("%d", a + i);
	for (int i = 1; i <= n; i++)
		scanf("%d", b + i);
	for (int i = 1; i <= n; i++)
		scanf("%d", c + i);
	dp[1][1] = b[1], dp[1][0] = a[1];
	dp[1][2] = dp[1][3] = -1e9;
	for (int i = 2; i <= n; i++) {
		dp[i][0] = max(dp[i - 1][1], dp[i - 1][3]) + a[i];
		dp[i][1] = max(dp[i - 1][1], dp[i - 1][3]) + b[i];
		dp[i][2] = max(dp[i - 1][0], dp[i - 1][2]) + b[i];
		dp[i][3] = max(dp[i - 1][0], dp[i - 1][2]) + c[i];
	}
	printf("%d\n", max(dp[n][0], dp[n][2]));
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章