結果
| 問題 |
No.2232 Miser's Gift
|
| コンテスト | |
| ユーザー |
FromBooska
|
| 提出日時 | 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)
FromBooska