結果
問題 | No.2364 Knapsack Problem |
ユーザー |
|
提出日時 | 2023-06-30 21:35:01 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 2,748 ms / 3,000 ms |
コード長 | 921 bytes |
コンパイル時間 | 324 ms |
コンパイル使用メモリ | 82,016 KB |
実行使用メモリ | 86,904 KB |
最終ジャッジ日時 | 2024-07-07 09:13:07 |
合計ジャッジ時間 | 64,035 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 20 |
ソースコード
import sys, time, randomfrom collections import deque, Counter, defaultdictinput = lambda: sys.stdin.readline().rstrip()ii = lambda: int(input())mi = lambda: map(int, input().split())li = lambda: list(mi())inf = 2 ** 63 - 1mod = 998244353import timet1 = time.time()n, m, w = mi()a = li()b = li()c = [-v for v in li()]d = [-v for v in li()]WV = []for x, y in zip(a, b):WV.append((x, y))for x, y in zip(c, d):WV.append((x, y))def solve(WV, w):n = len(WV)dp = [[-inf] * (w + 1) for _ in range(n + 1)]dp[0][0] = 0for i in range(n):x, y = WV[i]for j in range(w + 1):if 0 <= j + x <= w:dp[i + 1][j + x] = max(dp[i + 1][j + x], dp[i][j] + y)dp[i + 1][j] = max(dp[i][j], dp[i + 1][j])return max(dp[n])ans = 0while time.time() - t1 <= 2.7:random.shuffle(WV)ans = max(ans, solve(WV, w))print(ans)