defsolve(): n = int(input()) A = list(map(int, input().split())) B = list(map(int, input().split())) C = list(map(int, input().split()))
ans = mx = float("-inf") pre_a = pre_b = 0 suf_c = sum(C) for i inrange(n - 1): a, b, c = A[i], B[i], C[i] pre_a += a pre_b += b suf_c -= c ans = max(ans, suf_c + pre_b + mx) mx = max(mx, pre_a - pre_b) print(ans)
if __name__ == "__main__": solve()
方法二:狀態機DP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
defsolve(): n = int(input()) A = list(map(int, input().split())) B = list(map(int, input().split())) C = list(map(int, input().split()))
f = [[0] * 3for _ inrange(n + 1)] for i, (a, b, c) inenumerate(zip(A, B, C), start=1): f[i][0] = f[i - 1][0] + a if i >= 2: f[i][1] = max(f[i - 1][0], f[i - 1][1]) + b if i >= 3: f[i][2] = max(f[i - 1][1], f[i - 1][2]) + c print(f[n][2])