??
题意:用1*2砖块铺满n*m的房间。
思路转自:http://www.cnblogs.com/scau20110726/archive/2013/03/14/2960448.html
因为这道题输入范围在11*11之间,所以可以先打表直接输出..........
状态压缩DP
经典覆盖问题,输入n和m表示一个n*m的矩形,用1*2的方块进行覆盖,不能重叠,不能越出矩形边界,问完全覆...
分类:
其他好文 时间:
2015-07-20 23:41:56
阅读次数:
193
Vasya has a very beautiful country garden that can be represented as ann?×?mrectangular field divided inton·msquares. One beautiful day Vasya remember...
分类:
其他好文 时间:
2015-07-20 16:07:30
阅读次数:
171
1383. 畅畅的牙签袋题目描述畅畅说:“你们都说窝脑子瓦特了,我看你们才是脑子瓦特嘞- -”为了阻挠我们再次揭露他的无chǐ,畅畅妄图破坏我们的显示器,他拿出了自己收集的牙签包装袋,其大小是1×2的矩形,他想用密铺的方式把显示器全部遮挡住。显示器大小是W×H的矩形,畅畅把包装袋背面涂上了胶水,开始...
分类:
其他好文 时间:
2015-07-18 00:24:36
阅读次数:
141
经典的状态压缩DP 。 有没有感觉这道题和什么东西有点像? 没错,是01背包 。 将特征看作物品 , 只不过这里的状态有点复杂, 需要用一个集合才能表示它, 所以我们用d[s][a]来表示,已经询问了特征集s , 假设我们要猜的物品是w ,w所具备的特征集为a ,此时还要询问的最小次数 。 显然a是s的子集,而且要注意本题的要求, 求的是最小化的最大询问次数 。也就是说无论猜哪个物品,猜这...
分类:
其他好文 时间:
2015-07-17 22:51:50
阅读次数:
142
题意:有n个二进制串,长度都是m且都不相同,问最少询问多少个问题可以把这n个串完全区分开。
题解:1<=m<=11,从这个范围就可以推测是状态压缩,那么dp肯定要有一维表示提问的问题,然后另一位就是根据提出的问题把串分类,一种是符合提出的问题的状态,另一种不符合。这样f[i][j]表示在问了问题i的状态下答案是状态j时还要提出多少个问题才能把所有串区分开。
如果找到在问题i下和答案j相同的串只有...
分类:
其他好文 时间:
2015-07-16 22:11:57
阅读次数:
128
经典的状态压缩DP 。
根据DP的阶段定义,我们需要枚举每一个教师进行递推,但是由于每个教师可以教授的课程是复杂多样的,所以使得状态变得难以转移 。那么要怎么样表示状态呢? 显然增加一两个维度是无法胜任的,所以我们可以用二进制枚举子集的方法,用一个整数通过位运算充当一个集合 。 C++提供的位运算符极像对集合的操作,我们恰好可以利用这一点 。
用d[i][s1][s2]表示考虑了前i个人时的最...
分类:
其他好文 时间:
2015-07-15 22:55:03
阅读次数:
163
Island and study-sister
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 790 Accepted Submission(s): 273
Problem Description
Member...
分类:
其他好文 时间:
2015-07-15 17:00:50
阅读次数:
300
题意:有一个机器人要杀死其他n(1 <= n <= 16)个机器人,他自己配备了一个武器,并且给出了这个武器能杀死的敌人,如101表示他能杀死第1和第3个敌人,这样他就能得到第1和第3号敌人的武器,从而杀死更多的敌人,问他杀死所有的敌人的方法数。
题解:因为敌人数最多是16个,很容易想到应该是状态压缩dp,可以用f[S]表示状态S下进制位为1的敌人全被杀死的方案数,那么结果就是f[(1 << n)...
分类:
其他好文 时间:
2015-07-15 13:16:49
阅读次数:
134
1088. 邮递员小FDescription因为制造类专业很难在大城市立足,曾经立志振兴中华之工业的小F,果断在本科毕业后转行做了一名光荣的邮递员。他的任务是每天从总局出发,行走于所管辖区域的若干的邮局,收集所有的信,然后再汇总返回总局。因为工作繁忙,同一个邮局他每天只希望去一次。来往于任意两个邮局...
分类:
其他好文 时间:
2015-07-14 20:24:24
阅读次数:
173
思想来自:http://blog.pureisle.net/archives/475.html主要思想是用1和0来表示是否被填,然后根据两行之间的状态关系来构建DP方程。1.首先初始化第一行 计算第一行可以被横着填的方案数。此时cnt是1 所以其实合法的dp[1][j]都是12.然后开始构建第二行至...
分类:
编程语言 时间:
2015-07-08 20:26:04
阅读次数:
177