結果
| 問題 |
No.2364 Knapsack Problem
|
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2023-06-30 21:38:29 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 59 ms / 3,000 ms |
| コード長 | 667 bytes |
| コンパイル時間 | 225 ms |
| コンパイル使用メモリ | 82,180 KB |
| 実行使用メモリ | 66,176 KB |
| 最終ジャッジ日時 | 2024-07-07 09:16:19 |
| 合計ジャッジ時間 | 1,890 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 20 |
ソースコード
import sys
input = sys.stdin.readline
N,M,W=map(int,input().split())
A=list(map(int,input().split()))
B=list(map(int,input().split()))
C=list(map(int,input().split()))
D=list(map(int,input().split()))
for i in range(M):
C[i]=-C[i]
D[i]=-D[i]
A+=C
B+=D
DP=[0]*(1<<(N+M))
DP[0]=1
ANS=0
for i in range(1<<(N+M)):
if DP[i]==1:
w=0
v=0
for j in range(N+M):
if i & (1<<j) != 0:
w+=A[j]
v+=B[j]
for j in range(N+M):
if i & (1<<j) == 0:
if 0<=w+A[j]<=W:
DP[i^(1<<j)]=1
ANS=max(ANS,v+B[j])
print(ANS)
titia