結果
問題 | No.2364 Knapsack Problem |
ユーザー | sepa38 |
提出日時 | 2023-06-30 21:39:58 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 86 ms / 3,000 ms |
コード長 | 760 bytes |
コンパイル時間 | 205 ms |
コンパイル使用メモリ | 81,716 KB |
実行使用メモリ | 74,244 KB |
最終ジャッジ日時 | 2024-07-07 09:18:19 |
合計ジャッジ時間 | 2,403 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 20 |
ソースコード
n, m, w = map(int, input().split()) a = list(map(int, input().split())) b = list(map(int, input().split())) c = list(map(lambda x: -int(x), input().split())) d = list(map(lambda x: -int(x), input().split())) ac = a + c bd = b + d k = n + m weight = [0] * (1 << k) value = [0] * (1 << k) for i in range(1<<k): tmp = i for j in range(k): weight[i] += ac[j] * (tmp % 2) value[i] += bd[j] * (tmp % 2) tmp //= 2 flg = [0] * (1 << k) # print(weight) ans = 0 flg[0] = 1 for i in range(1<<k): if not 0 <= weight[i] <= w: continue for j in range(k): for l in range(k): if not 0 <= weight[i|(1<<l)] <= w: continue if i & (1 << l): continue flg[i|(1<<l)] |= flg[i] ans = max(ans, value[i]*flg[i]) print(ans)