题意:有一些货币告诉你每种的数量与币值。让你算在m内能组合成的的数值个数。
思路:数据量比较大,用多重背包的做法是会超时的,所以我们需要用二进制优化,记得以前听过这种写法,但是没有写过。今天终于做到这种题了第一次写参考了http://blog.csdn.net/hellobabygogo3/article/details/8013350 主要思路就是用二进制能组成所有v[i]以下的数。
代码如下:
1 /************************************************** 2 * Author : xiaohao Z 3 * Blog : http://www.cnblogs.com/shu-xiaohao/ 4 * Last modified : 2014-04-02 22:58 5 * Filename : hdu_2844.cpp 6 * Description : 7 * ************************************************/ 8 9 #include10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #include