提出 #41292474
ソースコード 拡げる
import sys
input = sys.stdin.readline
def solve(n, w, arr):
dp1 = [0] * (w + 1)
dp2 = [[] for _ in range(w + 1)]
dp2[0] = arr
ans = 0
for i in range(w + 1):
for wj, vj in dp2[i]:
if i + wj <= w and dp1[i] + vj > dp1[i + wj]:
dp1[i + wj] = dp1[i] + vj
dp2[i + wj] = dp2[i][:]
dp2[i + wj].remove((wj, vj))
ans = max(ans, dp1[i])
print(ans)
def main():
n, w = list(map(int, input().split()))
arr = [tuple(map(int, input().split())) for _ in range(n)]
solve(n, w, arr)
main()
提出情報
| 提出日時 | |
|---|---|
| 問題 | D - Knapsack 1 |
| ユーザ | drugkeeper |
| 言語 | PyPy3 (7.3.0) |
| 得点 | 100 |
| コード長 | 618 Byte |
| 結果 | AC |
| 実行時間 | 1732 ms |
| メモリ | 333076 KiB |
ジャッジ結果
| セット名 | All | ||
|---|---|---|---|
| 得点 / 配点 | 100 / 100 | ||
| 結果 |
|
| セット名 | テストケース |
|---|---|
| All | 0_00, 0_01, 0_02, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09 |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 0_00 | AC | 66 ms | 62020 KiB |
| 0_01 | AC | 49 ms | 61996 KiB |
| 0_02 | AC | 50 ms | 61924 KiB |
| 1_00 | AC | 57 ms | 74276 KiB |
| 1_01 | AC | 62 ms | 75668 KiB |
| 1_02 | AC | 608 ms | 271148 KiB |
| 1_03 | AC | 1522 ms | 331328 KiB |
| 1_04 | AC | 1732 ms | 333076 KiB |
| 1_05 | AC | 1499 ms | 297220 KiB |
| 1_06 | AC | 1572 ms | 288044 KiB |
| 1_07 | AC | 1032 ms | 249436 KiB |
| 1_08 | AC | 589 ms | 235788 KiB |
| 1_09 | AC | 289 ms | 146052 KiB |