分组背包
文章平均质量分 56
麻袋君
这个作者很懒,什么都没留下…
展开
-
hdu 3033 I love sneakers!
题目大意: 有k种鞋子,每种鞋子还有很多款式,每一款鞋子都有它的价格和价值; 在一定金额限制下,每一种鞋子至少买一双,最大可以获得多大的价值; 解题思路: 这道题目也是分组背包的一种类型,要求每一组中必拿一种; dp【i】【j】表示前k种物品花费j的情况下获得的最大价值; 每进行一次操作的时候有2种情况: 1:当前的种类已经拿过,则优先考虑从本层拿取最大值; 2:物品种数少于当前层原创 2015-03-27 09:37:52 · 361 阅读 · 0 评论 -
hdu 1712 Message
题目大意: 在一定时间内修不同的课程会根据这门课程修的天数获得不同的收益; 问在m时间内可以获得的最大收益是多少; 解题思路: 典型的分组背包; #include #include #include using namespace std; int main() { int n,m; while(scanf("%d%d",&n,&m)) { if(n==0&&m==0) b原创 2015-03-27 00:41:09 · 368 阅读 · 0 评论 -
poj 1837 天平平衡问题
题目大意: 给你n个天平的位置,m个不同质量的砝码,每一种砝码至多用一次,问使天平平衡的方法有多少; 解题思路: 我们用dp[i][j]表示放i个砝码,力矩为j的方案数;因此转移方程有dp[i][j]+=dp[i-1][上一种状态]; 很多人说这是0-1背包问题,但我觉得应该属于分组背包,poj上还有一道分组的背包的问题和这题及其相似,选课问题的那道题,不同的课程修不同的天数或得的价值不同原创 2015-03-28 09:47:28 · 1686 阅读 · 0 评论 -
poj 3211 Washing Cloth 分组背包
题目大意: 有n种颜色的衣服,每一种颜色的衣服有好多件,洗衣服的时候可以俩个人同时洗,但是必须洗完一种颜色才可以洗另外一种颜色,问洗完所有衣服需要的最短时间是多少; 解题思路: dp【i】表示花费时间i可以获得最大价值,价值和花费都为洗衣服的时间; 洗一些衣服,可以俩个人同时洗,那么最快会多快呢?最优情况是一个洗完这些衣服所用时间的一半; 因此,我们在洗每一种衣服的时候,进行一次0-1背原创 2015-03-28 21:27:34 · 473 阅读 · 0 评论 -
hdu 3810 Magina 队列优化的0-1背包t
题目大意: 给你n个怪,这些怪,有的在一组内,有的不在一组内,要杀只能杀一个组内的怪,m为升级需要的金钱要求,问最少花费多少可以升级; 解题思路: 根据怪的联通方式,我们可以通过深搜搜出一个组内的所有的怪; 因为本题的数据量很大,所以普通的背包无论是在空间上还是时间上都是无法承受的,所以需要借助队列模拟; 这里向网上的大牛致敬,慢慢学习! #include #include #incl原创 2015-03-30 09:14:24 · 461 阅读 · 0 评论 -
hdu 3535 AreYouBusy 混合背包
题目大意: 一些组内的物品至少用一个,一些组内的物品至多用一个,一些组内的物品不限制; 解题思路: 分开处理每一种情况即可; #include #include #include #include using namespace std; #define maxn 100010 struct Node{ int w,value; Node(){} Node(int a,int b):原创 2015-03-30 09:43:08 · 453 阅读 · 0 评论