
有 n 种物品,第 i 种物品有 x_i 个,每一个物品重量为 w_i ,价值为 v_i ,现有一个承重能力为 T 的背包,在不超过承重能力的情况下,背包种最多能装多少价值的物品。
题目
- 原题地址:多重背包
- 题目编号:NC235950
- 题目类型:DP、多重背包
- 时间限制:C/C++ 1秒,其他语言2秒
- 空间限制:C/C++ 262144K,其他语言524288K
1.题目大意
- 有 \(n\) 种物品,第 \(i\) 种物品有 \(x_i\) 个,每一个物品重量为 \(w_i\) ,价值为 \(v_i\) ,现有一个承重能力为 \(T\) 的背包,在不超过承重能力的情况下,背包种最多能装多少价值的物品。
2.题目分析
- 把数量大于一的物品看成不同的物品,就转换成了01背包问题
3.题目代码
#include <bits/stdc++.h>
using namespace std;
int n,t,x,w,v,a[105];
int main() {
cin >> n >> t;
while(n--){
cin >> x >> w >> v;
for(int i=0;i<x;i++) for(int j=t;j>=w;j--) a[j] = max(a[j],a[j-w]+v);
}cout << a[t] << endl;
}