400202 - 完全背包
完全背包问题和01背包类似,只不过每种物品有无限个:
一个容量v的背包,有n种物品,每种物品的质量为w,价格为c,并且不限个数。求最多能装多少价值?
这类问题的解决方案就是在01背包的基础上,遍历每个物品时再循环k次,k的最大值取决于当前容量j最多能装多少个当前这种物品。
Input
第一行,有单个空格分隔的的两个整数,分别表示v和n。
接下来n行,每行有单个空格分隔的两个整数,分别表示一个物品的重量w_i和价值c_i。
对于100%的数据:
1\le v \le 1000;
1\le n,w_i,c_i \le 100。
Output
一行,一个整数,表示最大价值。
Examples
Input
4 3 1 1 1 2 2 3
Output
8
Input
14 5 7 5 5 5 8 1 6 9 4 2
Output
18
Input
4 3 3 8 3 8 3 8
Output
8
Hint
还有一类问题称为“多重背包”,这类问题介于01背包和完全背包之间,限定了第i类物品有x[i]个,这类问题只需要在完全背包的内循环中稍加修改:k<=min(x[i],j/w[i])即可。