#DPD. Knapsack 1

Knapsack 1

题目描述

N N 個の品物があります。 品物には 1, 2, , N 1,\ 2,\ \ldots,\ N と番号が振られています。 各 i i (1  i  N 1\ \leq\ i\ \leq\ N ) について、品物 i i の重さは wi w_i で、価値は vi v_i です。

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

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

输入格式

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

N N W W w1 w_1 v1 v_1 w2 w_2 v2 v_2 : : wN w_N vN v_N

输出格式

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

题目大意

nn 个物品,选取其中若干个物品,使得对选取的这些物品 wiW\sum w_i\leq W 的前提下最大化 vi\sum v_i

其实就是背包问题。

3 8
3 30
4 50
5 60
90
5 5
1 1000000000
1 1000000000
1 1000000000
1 1000000000
1 1000000000
5000000000
6 15
6 5
5 6
6 4
6 6
3 5
7 2
17

提示

制約

  • 入力はすべて整数である。
  • 1  N  100 1\ \leq\ N\ \leq\ 100
  • 1  W  105 1\ \leq\ W\ \leq\ 10^5
  • 1  wi  W 1\ \leq\ w_i\ \leq\ W
  • 1  vi  109 1\ \leq\ v_i\ \leq\ 10^9

Sample Explanation 1

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

Sample Explanation 2

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

Sample Explanation 3

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