結果
問題 | No.2232 Miser's Gift |
ユーザー |
![]() |
提出日時 | 2023-03-04 14:38:51 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 327 ms / 2,000 ms |
コード長 | 947 bytes |
コンパイル時間 | 203 ms |
コンパイル使用メモリ | 81,664 KB |
実行使用メモリ | 156,308 KB |
最終ジャッジ日時 | 2024-09-18 01:17:30 |
合計ジャッジ時間 | 12,442 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge6 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 55 |
ソースコード
# ナップザック問題の変形バージョン # ナップザックは1度だけやる # 入力例1でたとえばx=3ならW-3=2を見ると、ナップザックの最大価値3で現在のナップザックW最大価値8 # これでx=3の価値が5なら差がつかない、Wでの値が1を上回れば差がつくので、価値は6とする N, W = map(int, input().split()) weight = [] value = [] for n in range(N): w, v = map(int, input().split()) weight.append(w) value.append(v) dp = [[0] * (W+1) for i in range(N)] for i in range(N): for j in range(W+1): # use i if j - weight[i] >= 0: dp[i][j] = max(dp[i-1][j - weight[i]] + value[i], dp[i-1][j]) else: # no use set i dp[i][j] = dp[i-1][j] #print(dp[N-1]) for x in range(1, W+1): current_value = dp[N-1][W-x] current_diff = dp[N-1][W] - current_value ans = current_diff+1 print(ans)