问题描述:
解题思路:
基础多重背包模板题,与优化01背包的不同处在于利用while(s--)循环计算s数量。数据规模不大,不需要优化 O(nsv)。
代码:
#include <bits/stdc++.h>
using namespace std;
const int N = 2e2+9;
int dp[N];
int main()
{
int n, m;cin >> n >> m;
for(int i = 1; i <= n; i++){
int w, v, s;cin >> w >> v >> s;
while(s--){ // 多重背包在01背包的基础上加一个循环(基础模型,当数据太大需要优化)
for(int j = m; j >= w; j--){
dp[j] = max(dp[j], dp[j - w] + v);
}
}
}
cout << dp[m] << '\n';
return 0;
}
知识点:基础多重背包