背包系列 hdu 3535 分组背包】的更多相关文章

题意: 有n组工作,现在有T分钟时间去做一些工作.每组工作里有m个工作,并且类型为s,s类型可以为0,1,2,分别表示至少选择该组工作的一项,至多选择该工作的一项,不限制选择.每个工作有ci,gi两个属性,表示需要花费ci时间去完成该项工作,完成后将会获得gi的快乐值,现在求快乐值最大多少,如果不能完成工作,输出-1: 原题如下: AreYouBusy Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Sub…
ACboy needs your help Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4912    Accepted Submission(s): 2651 Problem Description ACboy has N courses this term, and he plans to spend at most M days…
ACboy needs your help Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5872    Accepted Submission(s): 3196 Problem Description ACboy has N courses this term, and he plans to spend at most M days…
http://acm.hdu.edu.cn/showproblem.php?pid=1712 问题 有N件物品和一个容量为V的背包.第i件物品的费用是c[i],价值是w[i].这些物品被划分为若干组,每组中的物品互相冲突,最多选一件.求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大. 算法 这个问题变成了每组物品有若干种策略:是选择本组的某一件,还是一件都不选.也就是说设f[k][v]表示前k组物品花费费用v能取得的最大权值,则有: f[k][v]=max{f[k-1]…
I love sneakers! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4464    Accepted Submission(s): 1824 Problem Description After months of hard working, Iserlohn finally wins awesome amount of sc…
B - Gold miner Time Limit:2000MS      Memory Limit:32768KB     Description Homelesser likes playing Gold miners in class. He has to pay much attention to the teacher to avoid being noticed. So he always lose the game. After losing many times, he want…
分组背包(至少选一个) 我真的搞不懂为什么,所以现在就只能当作是模板来用吧 如果有大牛看见 希望评论告诉我 &代码: #include <cstdio> #include <bitset> #include <iostream> #include <set> #include <cmath> #include <cstring> #include <algorithm> #include <map> #…
P1757 通天之分组背包 题解 分组背包板子题 k组物品,每组之间相互矛盾,也就是一组里面只能选一个或者不选 分组背包其实和01背包差不多,就是多加一维枚举组数 f[k][j] 前k组中,体积不超过 j 的最大价值 降一维求解nice 然后注意枚举顺序: 代码 #include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<string> #i…
http://acm.hdu.edu.cn/showproblem.php?pid=3535 题意:有n组工作,T时间,每个工作组中有m个工作,改组分类是s,s是0是组内至少要做一件,是1时最多做一件,2时随意,每项工作的描述是花费的时间和获得的快乐值,求在T时间内可获的最大快乐值. memset放错位置了,折腾老半天. 分组混合背包,有的取一件或不取,有的随意,有的最少一个 分三种情况讨论 s==0 考虑前面取过时这次取或不取,前一组取过时这次取或不取 s==1 考虑前一组取过时这次取或不取…
题意: 给出n组数据,每组数据有一个类型. 0代表至少选择一个,1代表至多选择一个,2代表任意选择. 给出背包容量. 如果背包不能满足最基本的要求输出-1. 思路: 背包问题变相考察~ 当0的时候初始化为-INF,然后就能保证至少选择一个. 当1或2的时候初始化上一层的值,然后1和2稍微有点区别,1只能从上一层得到下一层,2可以用本层更新. #include<stdio.h> #include<string.h> #include<algorithm> using na…