#P2516. 部分背包问题

    ID: 4796 传统题 1000ms 128MiB 尝试: 19 已通过: 8 难度: 3 上传者: 标签>贪心动态规划背包普及01背包背包问题dp顺序结构

部分背包问题

题目描述

有一个贼在偷窃一家商店时发现有 NN 件物品:第 ii 件物品价值 ViV_i 元,重 WiW_i 磅(1iN1 \leq i \leq N),ViV_iWiW_i 都是整数。他希望带走的东西越值钱越好,但他的背包最多只能装下 WW 磅的东西(WW 为整数)。小偷可以带走某个物品的一部分(即可将物品切割,按重量比例获得相应价值)。请问小偷最终带走的物品的最高总价值是多少?

输入格式

第一行包含两个整数 NNWW,分别表示物品的数量和背包的最大承重。
接下来 NN 行,每行两个整数 ViV_iWiW_i,分别表示第 ii 件物品的价值和重量。

输出格式

输出一行一个整数,表示能获得的最大总价值(结果取整)。

样例

4 50
60 10
100 20
120 30
45 15
240

样例解释
共有 44 件物品,背包承重 5050 磅。最优方案:

  • 11 件:取全部,重量 1010,价值 6060
  • 22 件:取全部,重量 2020,价值 100100
  • 33 件:取 2020 磅(23\frac{2}{3}),价值 120×2030=80120 \times \frac{20}{30} = 80
  • 44 件不取。

总重量 10+20+20=5010+20+20=50,总价值 60+100+80=24060+100+80=240,为最大值。

数据范围

  • 1N100001 \le N \le 10000
  • 1W300001 \le W \le 30000
  • 1Vi,Wi300001 \le V_i, W_i \le 30000(价值与重量为正整数)