NC235950 多重背包

题目

  • 原题地址:多重背包
  • 题目编号: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; 
}
posted @ 2022-09-12 09:02  仪战群儒  阅读(71)  评论(0)    收藏  举报