#P1001. 【模板】多重背包

【模板】多重背包

题目描述

为了迎接班级的元旦晚会,班主任王老师特批了 mm 元请你帮忙采购物品,并给你一张清单,注明了王老师调研小卖部中出售的 nn 个待选物品的价格、价值(价值越高,同学们越喜欢)、以及最多能买到的数量。

请你编程计算出,mm 元最多能够采购到的物品的最大价值是多少?注意,mm 元不一定都要花完。

输入格式

第一行两个整数 n,mn,m,其中 nn 代表清单中待选物品总数,mm 表示王老师的拨款金额。

接下来 nn 行,每行三个整数 p,v,sp,v,s,分别表示第 ii 种物品的价格、价值和能够买的最大数量(购买数量范围 0s0\sim s)。

输出格式

一行一个整数,表示能够采购到的最大价值。

样例

3 50
10 60 2
20 100 2
30 120 1
260

提示

样例解释

共有 33 种物品,预算 5050 元。

  • 11 种物品:价格 1010 元,价值 6060,最多购买 22 件;
  • 22 种物品:价格 2020 元,价值 100100,最多购买 22 件;
  • 33 种物品:价格 3030 元,价值 120120,最多购买 11 件。

最优采购方案为:购买 22 件第 22 种物品(2×20=402\times 20=40 元,价值 2×100=2002\times 100=200)和 11 件第 11 种物品(1010 元,价值 6060),总花费恰好 5050 元,总价值 200+60=260200+60=260

其他组合的价值均不超过 260260(例如购买第 33 种和第 22 种各 11 件,花费 5050 元,价值 120+100=220120+100=220),因此最大价值为 260260

数据范围

1n5001\le n\le 500

1m<60001\le m< 6000

1p,v1001\le p,v\le 100

1s101\le s\le 10

来源

动态规划 多重背包