#2317. 大卖场购物车2—0-1背包问题

大卖场购物车2—0-1背包问题

说明

央视有一个大型娱乐节目—购物街,舞台上模拟超市大卖场,有很多货物,每个嘉宾分配一个购物车,可以尽情地装满购物车,购物车中装的货物价值最高者取胜。假设有nn个物品和1个购物车,每个物品ii对应价值为viv_i,重量wiw_i,购物车的容量为WW(你也可以将重量设定为体积)。每个物品只有一件,要么装入,要么不装入,不可拆分。如何选取物品装入购物车,使购物车所装入的物品的总价值最大?要求输出最优值(装入的最大价值)和最优解(装入了哪些物品)。

输入格式

第一行是一个整型数m(m<100)m(m<100)表示共有mm组测试数据。

每组测试数据第一行输入,nnW1<=n<=401<=W<=1015W(1 <= n <=40,1 <= W <= 10^{15}),接下来有nn行,每行输入两个数,代表第ii个物品的重量wiw_i 和价值 vi1<=wivi<=1015v_i(1 <= w_i,v_i <= 10^{15})

输出格式

对于每一组输入,输出满足题意的最大价值和最优解。

每组的输出占一行。

样例

2
5 10
2 6
5 3
4 5
2 4
3 6
4 52
12 13
10 24
22 13
9 24
17
61

来源

《趣学算法》5.2节