状压dp
文章平均质量分 75
catfishbear
acmer
展开
-
uva 1252 Twenty Questions 状压dp
集合上的dp,看小紫书想了好久~ 有n个物体,m个特征,最少询问多少次能保证猜到是哪个问题。 首先在读入的时候将每个物体转化为一个二进制整数,用一个集合s来表示已经询问了哪些特征。 用d(s,a)来表示询问了集合s的特征,有集合a个特征已经具备,还需要问多少个特征的最小值。a一定为s的子集。 则状态方程为 d(s,a) = min{ max(d(s+{k},a+{k}),(s+{k},a原创 2014-07-21 22:15:46 · 608 阅读 · 0 评论 -
uva 10817 Headmaster's Headache 集合上的dp 位运算
集合上的dp,用到了很多位运算的题目~ 给出s个课程,m个教师,n个求职者,教师必须招聘,然后招聘一些求职者,使得每一门课都至少有两个老师能教。问题就转换成了招聘哪些求职者使得花费最少。因为s范围小于8,则可以用二进制表示,用集合s1表示恰好有一个人教的课的集合,用集合s2表示有两个人教的课的集合,则每次状态转移即为选择这名求职者还是不选(教师必须选)具体看代码。 d(i,s1,s原创 2014-07-21 22:40:19 · 557 阅读 · 0 评论 -
codeforces 453 B Little Pony and Harmony Chest (状压dp)
题意:求一个b数组,b数组中的所有数互质,和a数组对应下标的数的差的绝对值最小。 考虑a数组中的所有数范围为[1,30]则,b数组取值只有可能为[1,59),因为如果取到59及其以后,肯定可以取1,59-30=30-1;而且1可以取多次,1与任何数互质。 然后首先需要把[2,59)之间的素数取出来,总共16个。然后状压,1代表那一位的素数因子是否存在。 d[i][s][0]表示递推到第i个位原创 2014-08-05 16:17:43 · 645 阅读 · 0 评论