题目链接:P1776 宝物筛选
题解思路: 多重背包模板。将第i种物品分成若干件物品,其中每件物品有一个系数,这件物品的费用和价值均是原来的费用和价值乘以这个系数。例如,如果p[i]为13,就将这种物品分成系数分别为1 , 2 , 4 , 6 的四件物品,则这四件物品的费用为kw[i]、价值为kv[i]。(k是物品的数目,而w[i]和v[i]分别为费用和价值)。这样我们就把一件物品拆分为多个物品,然后我们可以使用01背包求解,因为现在每个物品只有1件。
代码:
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 5000000;
int n, k, v[maxn], w[maxn], m[maxn],cnt,V[maxn]