【入门】多重背包
题目描述
有 种物品和一个容量是 的背包。
第 种物品最多有 件,每件体积是 ,价值是 。
求解将哪些物品装入背包,可使物品体积总和不超过背包容量,且价值总和最大。 输出最大价值。
输入格式
第一行两个整数,,用空格隔开,分别表示物品种数和背包容积。
接下来有 行,每行三个整数 ,用空格隔开,分别表示第 种物品的体积、价值和数量。
输出格式
输出一个整数,表示最大价值。
4 5
1 2 3
2 4 1
3 4 3
4 5 2
10
提示
【样例解释 1】
- 可以选择 3 个物品1 和 1 个物品2
- 总体积为:3 * 1 + 1 * 2 = 5
- 总价值为:3 * 2 + 1 * 4 = 10
请思考后再点击查看提示
- 本题考查多重背包的 二进制优化 方法
- 假设某个物品的数量是 10,体积是 ,价值是
- 将 10 表示成
- 我们可以将这个物品拆分成 4 个物品
- 物品 1:体积 1 * v,价值 1 * w
- 物品 2:体积 2 * v,价值 2 * w
- 物品 3:体积 4 * v,价值 4 * w
- 物品 4:体积 3 * v,价值 3 * w
- 不管原来的物品取了多少个,都可以有拆分成的新的 4 个物品组合而成
- 因此,可以将所有的物品都按照上述方法拆分,然后做按 01背包求解