結果
問題 | No.37 遊園地のアトラクション |
ユーザー |
![]() |
提出日時 | 2021-11-29 03:00:02 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 438 ms / 5,000 ms |
コード長 | 646 bytes |
コンパイル時間 | 134 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 18,688 KB |
最終ジャッジ日時 | 2024-07-01 23:59:51 |
合計ジャッジ時間 | 5,146 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 27 |
ソースコード
T=int(input()) N=int(input()) C=list(map(int,input().split())) V=list(map(int,input().split())) DP=[0]*(10**6) for i in range(T+1): DP[i]=max(DP[i-1],DP[i]) for j in range(N): c=C[j] v=V[j] DP[i+c]=max(DP[i+c],DP[i]+v) DP={0:0} for i in range(N): c=C[i] v=V[i] x=v s=v time=c L=[] while x!=0: for k in DP: if k+time<=T: L.append((k+time,DP[k]+s)) x//=2 s+=x time+=c for time,v in L: if time in DP: DP[time]=max(DP[time],v) else: DP[time]=v print(max(DP.values()))