AcWing 4. 多重背包问题 I 听哥的好记
原题链接
简单
作者:
AC_any
,
2021-04-09 21:56:52
,
所有人可见
,
阅读 275
加深记忆
- 和01背包很像,俺叫 0k背包
- 继承了01背包,容积要倒着取
- 询问花样多了,嘿!哥们,要几个 0到K任选。
听注释讲故事
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 110;
int n, m;
int f[N];
int main()
{
cin >> n >> m;
int v,w,s;
while(n--){
cin >> v >> w >> s;//进了一件新货
for (int j = m; j>=0; j -- )//从容量阔绰的开始问,搭理咱的可能性大
for (int k = 0; k <= s && k * v <= j; k ++ )//大哥,抽几支?
f[j] = max(f[j], f[j - v * k] + w * k);
}
cout << f[m] << endl;
return 0;
}