题目链接: P1833 樱花
解题思路: 将第i种物品分成若干件物品,其中每件物品有一个系数,这件物品的费用和价值均是原来的费用和价值乘以这个系数。例如,如果p[i]为13,就将这种物品分成系数分别为1 , 2 , 4 , 6 的四件物品,则这四件物品的费用为kw[i]、价值为kv[i]。(k是物品的数目,而w[i]和v[i]分别为费用和价值)。这样我们就把一件物品拆分为多个物品,然后我们可以使用01背包求解,因为现在每个物品只有1件。
代码:
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn = 500000;
int w[maxn], v[maxn], a[maxn], b[maxn], c[maxn],dp[maxn];
int n,tx,yx,ty,yy,cnt,ans;</