A29346.火星背包 II
普及-
官方
通过率:0%
时间限制:2.00s
内存限制:512MB
题目描述
时间限制:2000ms
内存限制:512MB
在遥远的火星矿场上,有 N 块重量和价值分别为 wi(1≤i≤N) 和 vi(1≤i≤N) 的矿石。
这些矿石都是相当巨大且沉重,以至于普通的背包难以装载。
不过,在这个星球上有一种特殊的背包,我们称之为 「火星背包」,它能够承载总重量不超过 M 的矿石。
这次发现的矿石价值都比较低,但是基地的装置可以将这些矿石再加工使其体积和重量变小,所以你依然需要尽可能多地收集矿石,并且使收集到的矿石总价值尽可能的高。
你的任务是找到一种方法,在不超过背包承载能力的情况下,选取矿石,使得它们的总价值最高。
数据范围
- 1≤N≤103
- 1≤vi≤100
- 1≤wi≤M≤109
输入格式
对于每个测试文件格式如下:
N M
w1 v1
w2 v2
⋮
wN vN
输出格式
对于每个测试文件,在单独的一行输出能够选取矿石的最大价值总和。
输入输出样例
输入#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:
选取矿石 [1,2,4] 需要的背包容量为 2+1+2=5,价值为 3+2+3=8。
无法通过选取其他矿石在背包容量允许的情况下,得到更大的价值。