結果
| 問題 |
No.2889 Rusk
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-01-31 09:47:28 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 510 ms / 2,000 ms |
| コード長 | 730 bytes |
| コンパイル時間 | 594 ms |
| コンパイル使用メモリ | 82,020 KB |
| 実行使用メモリ | 138,372 KB |
| 最終ジャッジ日時 | 2025-01-31 09:47:46 |
| 合計ジャッジ時間 | 16,757 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 52 |
ソースコード
N = int(input())
A = [0]+list(map(int,input().split()))
B = [0]+list(map(int,input().split()))
C = [0]+list(map(int,input().split()))
INFTY = 10**15
dp = [[-INFTY for _ in range(9)] for _ in range(N+1)]
G = {0:[0,1,3,4],1:[1,2,4],2:[2,5],3:[3,4,6],4:[4,5,7],5:[5,8],6:[6,7],7:[7,8],8:[8]}
T = {0:0,1:1,2:0,3:1,4:2,5:1,6:0,7:1,8:0}
dp[1][0] = A[1]
dp[1][1] = B[1]
dp[1][3] = B[1]
dp[1][4] = C[1]
for i in range(1,N):
for j in range(9):
for k in G[j]:
if T[k]==0:
dp[i+1][k] = max(dp[i+1][k],dp[i][j]+A[i+1])
elif T[k]==1:
dp[i+1][k] = max(dp[i+1][k],dp[i][j]+B[i+1])
else:
dp[i+1][k] = max(dp[i+1][k],dp[i][j]+C[i+1])
print(max(dp[N]))