摘要:        
http://poj.org/problem?id=2392	背包没有容量,对于每种木块,其能达到的最大高度a便可做为其容量。先用二进制优化减少数量,然后根据a的值排序,01背包时可以以每种木块可达到的最大高度为最大容量。RE一次,因为val的大小只开了401...这里是个易错点啊,二进制优化后的数量不确定。代码:#include<cstdio>#include<cstring>#include<cstdlib>#defineMax(a,b)a>b?a:bintdp[40005];structBlock{inth;inta;}val[4001];int    阅读全文
        posted @ 2012-01-30 03:51
追逐.
阅读(225)
评论(0)
推荐(0)
            
        
        
摘要:        
http://poj.org/problem?id=1276	有一个Cash Machine,里面装有t种面值为n[i]的货币,每种有v[i]张。问在所换金额不超过cash元钱的情况下,所能换取的最大金额。	多重背包,转换成01背包来做,其中要用到二进制优化。《背包九讲》上讲的挺不错,在每件物品价值前加上系数,并保证这些系数的组合包括1..n的所有数且总和为n。代码:#include<cstdio>#include<cstring>#defineMax(a,b)a>b?a:bintdp[100005];intval[105];intmain(){intcash,n    阅读全文
        posted @ 2012-01-30 01:47
追逐.
阅读(183)
评论(0)
推荐(0)
 
                    
                     
                    
                 
                    
                 
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号