A29346.火星背包 II

普及-

官方

通过率:0%

时间限制:2.00s

内存限制:512MB

题目描述

时间限制:2000ms
内存限制:512MB

在遥远的火星矿场上,有 NN 块重量和价值分别为 wi(1iN)w_i(1 \le i \le N)vi(1iN)v_i(1 \le i \le N) 的矿石。

这些矿石都是相当巨大且沉重,以至于普通的背包难以装载。
不过,在这个星球上有一种特殊的背包,我们称之为 「火星背包\bf{火星背包}」,它能够承载总重量不超过 MM 的矿石。

这次发现的矿石价值都比较低,但是基地的装置可以将这些矿石再加工使其体积和重量变小,所以你依然需要尽可能多地收集矿石,并且使收集到的矿石总价值尽可能的高。

你的任务是找到一种方法,在不超过背包承载能力的情况下,选取矿石,使得它们的总价值最高。

数据范围\large{数据范围}

  • 1N1031 \le N \le 10^3
  • 1vi1001 \le v_i \le 100
  • 1wiM1091 \le w_i \le M \le 10^9

输入格式

对于每个测试文件格式如下:

N M\tt{N\ M}
w1 v1\tt{w_1\ v_1}
w2 v2\tt{w_2\ v_2}
\vdots
wN vN\tt{w_N\ v_N}

输出格式

对于每个测试文件,在单独的一行输出能够选取矿石的最大价值总和。

输入输出样例

  • 输入#1

    4 5
    2 3
    1 2
    3 4
    2 3

    输出#1

    8
  • 输入#2

    9 110
    19 31
    17 23
    44 86
    18 14
    4 4
    34 73
    17 56
    7 88
    24 44

    输出#2

    307

说明/提示

样例1\bf{样例 1:}

选取矿石 [1,2,4][1, 2, 4] 需要的背包容量为 2+1+2=52 + 1 + 2 = 5,价值为 3+2+3=83 + 2 + 3=8
无法通过选取其他矿石在背包容量允许的情况下,得到更大的价值。

首页