結果
| 問題 |
No.2566 美しい整数列
|
| コンテスト | |
| ユーザー |
oginoshikibu
|
| 提出日時 | 2023-12-02 16:38:39 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,024 bytes |
| コンパイル時間 | 281 ms |
| コンパイル使用メモリ | 82,068 KB |
| 実行使用メモリ | 224,972 KB |
| 最終ジャッジ日時 | 2024-09-26 20:33:01 |
| 合計ジャッジ時間 | 4,937 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 1 TLE * 1 -- * 19 |
ソースコード
from collections import defaultdict, deque
from itertools import accumulate
n,m=map(int, input().split())
A=list(map(int, input().split()))
B=tuple(map(int, input().split()))
C=tuple(map(int, input().split()))
CA=list(accumulate(C))
if n==2:
print(min(C[0] if A[1]-A[0]!=B[0] else 0,C[1] if A[1]-A[0]!=B[0] else 0))
exit()
INF=float("inf")
S=defaultdict(lambda: INF)
if A[1]-A[0]==B[0]:
S[A[1]]=min(S[A[1]],0)
else:
S[A[1]]=min(S[A[1]],C[0])
S[A[0]+B[0]]=min(S[A[0]+B[0]],C[1])
ans=INF
for idx in range(2,n):
cmin=INF
newS=defaultdict(lambda: INF)
# print(dict(S))
for prev,cost in S.items():
cmin=min(cmin,cost)
if idx==n-1:
ans=min(ans,cost+C[-1] if prev+B[(idx-1)%m]!=A[idx] else cost)
continue
if prev+B[(idx-1)%m]==A[idx]:
newS[A[idx]]=min(newS[A[idx]],cost)
else:
newS[prev+B[(idx-1)%m]]=min(newS[prev+B[(idx-1)%m]],cost+C[idx])
newS[A[idx]]=min(newS[A[idx]],CA[idx-1])
S=newS
print(ans)
oginoshikibu