百练 4150: 上机

dp

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
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;
}

你可能感兴趣的:(百练)