400202 - 完全背包

时间限制

20 毫秒

内存限制

64 MB

通过次数

14

提交次数

21

完全背包问题和01背包类似,只不过每种物品有无限个:

一个容量v的背包,有n种物品,每种物品的质量为w,价格为c,并且不限个数。求最多能装多少价值?

这类问题的解决方案就是在01背包的基础上,遍历每个物品时再循环k次,k的最大值取决于当前容量j最多能装多少个当前这种物品。

输入

第一行,有单个空格分隔的的两个整数,分别表示vn

接下来n行,每行有单个空格分隔的两个整数,分别表示一个物品的重量w_i和价值c_i

对于100%的数据:

1\le v \le 1000

1\le n,w_i,c_i \le 100

输出

一行,一个整数,表示最大价值。

样例

输入

4 3
1 1
1 2
2 3

输出

8

输入

14 5
7 5
5 5
8 1
6 9
4 2

输出

18

输入

4 3
3 8
3 8
3 8

输出

8

提示

还有一类问题称为“多重背包”,这类问题介于01背包和完全背包之间,限定了第i类物品有x[i]个,这类问题只需要在完全背包的内循环中稍加修改:k<=min(x[i],j/w[i])即可。