
多重背包
麻袋君
这个作者很懒,什么都没留下…
展开
-
poj 1276 Cash Machine
题目大意: 有一个容量一定的背包,具有不同价值的货币且有数量限制,问背包中最多能有多少价值的货币; 解题思路: 多重背包,用二进制进行优化,代码简单,方便,为什么用二进制可以转换成0-1背包做呢?这是因为这几种状态可以组合出所有状态,然后0-1背包即可; #include #include #include using namespace std; #define maxn 100010原创 2015-03-26 21:50:09 · 368 阅读 · 0 评论 -
poj 2392 Space Elevator
题目大意: 有n种木板,有三个属性,高度,数量,最大累加的高度; 问用这些木板最大可以累加多高; 解题思路: 贪心加背包,肯定要先放最大累加高度小的,所以可以先排一下序,在进行背包; 直接用多重背包也可以; #include #include #include using namespace std; struct Node{ int h,a,c; Node(){} Node(i原创 2015-03-26 23:55:08 · 351 阅读 · 0 评论 -
hdu 1059 Dividing
题目大意: 给你六种硬币的数量,每种硬币的价值为它的标号,问能不能将这些硬币平分为价值相同的俩分; 解题思路: 明显的多重背包问题,背包的容量为价值的一半即可; 但是我用多重背包做的话效率特别差;如果用完全背包,然后控制使用次数的话可以优化到100ms,但是我看排行榜上,最快的是0ms,醉了。。。。。。 多重背包做法: #include #include #include using原创 2015-03-26 15:12:09 · 333 阅读 · 0 评论 -
hdu 2191 hdu 2191悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 多重背包
题目大意: 有一定价值的背包去装不同重量的有数量限制的大米,问最多装多少重量的大米。。。。。。。。 解题思路: 赤果果的多重背包 #include #include #include using namespace std; int m,n; int c[110],num[110],v[110]; int dp[110],vis[110]; void zero(int cost,int v原创 2015-03-26 21:43:49 · 395 阅读 · 0 评论