atcoder#DPD. Knapsack 1

Knapsack 1

配点 : 100100

問題文

NN 個の品物があります。 品物には 1,2,,N1, 2, \ldots, N と番号が振られています。 各 ii (1iN1 \leq i \leq N) について、品物 ii の重さは wiw_i で、価値は viv_i です。

太郎君は、NN 個の品物のうちいくつかを選び、ナップサックに入れて持ち帰ることにしました。 ナップサックの容量は WW であり、持ち帰る品物の重さの総和は WW 以下でなければなりません。

太郎君が持ち帰る品物の価値の総和の最大値を求めてください。

制約

  • 入力はすべて整数である。
  • 1N1001 \leq N \leq 100
  • 1W1051 \leq W \leq 10^5
  • 1wiW1 \leq w_i \leq W
  • 1vi1091 \leq v_i \leq 10^9

入力

入力は以下の形式で標準入力から与えられる。

NN WW

w1w_1 v1v_1

w2w_2 v2v_2

::

wNw_N vNv_N

出力

太郎君が持ち帰る品物の価値の総和の最大値を出力せよ。

3 8
3 30
4 50
5 60
90

品物 1,31, 3 を選べばよいです。 すると、重さの総和は 3+5=83 + 5 = 8 となり、価値の総和は 30+60=9030 + 60 = 90 となります。

5 5
1 1000000000
1 1000000000
1 1000000000
1 1000000000
1 1000000000
5000000000

答えは 32-bit 整数型に収まらない場合があります。

6 15
6 5
5 6
6 4
6 6
3 5
7 2
17

品物 2,4,52, 4, 5 を選べばよいです。 すると、重さの総和は 5+6+3=145 + 6 + 3 = 14 となり、価値の総和は 6+6+5=176 + 6 + 5 = 17 となります。