(p.s:第一次做状态压缩dp的题目,真是把俺折腾到死。。。。)
题目来源:
HihoCoder 1048
题目要求:
小Hi和小Ho领到了一个大小为N*M的长方形盘子,他们可以用这个盒子来装一些大小为2*1的蛋糕。但是根据要求,他们一定要将这个盘子装的满满的,一点缝隙也不能留下来,才能够将这些蛋糕带走。
于是他们提出了一个问题——他们有多少种方案来装...
分类:
其他好文 时间:
2016-05-06 12:42:20
阅读次数:
222
做这个题的时候我给想简单了,还以为是个基础的广搜,后来发现搜索无法完成,因为vis的标记已经不能再使用了,因为一旦标记了,同一个结点不能走两次,而题目中有的时候有些点必须要走两次,甚至多次. 我就无从下手了,赛后看了题解才知道,每个点都有16个状态,用状态压缩可以来保存每个点的钥匙状态,开一个三维的 ...
分类:
其他好文 时间:
2016-05-03 12:09:51
阅读次数:
184
状态压缩,我们枚举第一行的所有状态,然后根据第一行去转变下面的行,枚举或者深搜直到最后最后一行,可以判断是不是所有的1都可以全部转换为0,记录所有的解,输出最小的一个就可以. 这里有一个很重要的优化,就是当n比m大的,转置这个矩阵,如果不加这个在G++的情况下会超时,C++900Ms多AC.代码及注 ...
分类:
其他好文 时间:
2016-05-02 18:27:36
阅读次数:
142
之前做过一个题,是在学贪心的时候做的,所以这个题就想当然的跑偏了,当看到N是<=16 的时候,状态压缩就理所当然了 ...
分类:
其他好文 时间:
2016-04-30 23:43:10
阅读次数:
148
一道状态压缩的题,而我却错了好多次....应该先把满足的情况预处理出来 ...
分类:
其他好文 时间:
2016-04-30 20:56:21
阅读次数:
143
位操作一共有6种形式:<<,>>,&,|,^,~; 1.左移操作符<<:左移操作符将整数的二进制向左移若干位,将最高若干位挤掉,并在低位补0 如: 实际上:a<<1,a右移1位表示a*2,a<<m表示a*2^m 2.右移操作符>>:右移操作符将整数的二进制向右移若干位,将最低若干位挤掉,并在高位补0 ...
分类:
其他好文 时间:
2016-04-29 22:06:18
阅读次数:
274
典型的状态压缩DP问题。第i行的取法只受到第i-1行的影响。首先每一行的取法要相容(不能有两个相邻),然后相邻行之间也要相容。将每一个格子看做两种状态,1表示取,0表示不取。这样每一行就是一个01串,恰好可以看做是一个二进制数,那么该二进制数对应的十进制整数可以唯一的表示为当前第 i 行的状态。定义 ...
分类:
其他好文 时间:
2016-04-28 19:47:04
阅读次数:
181
背包(0/1背包,完全背包,多重背包,分组背包,简单依赖背包,复杂依赖背包转化为树形dp) LIS 最长单调递增子序列 LCS 最长公共子序列 环形dp 树形dp 状态压缩dp 单调dp 求LCS(最长公共子序列)的长度的nlogn算法可以通过转换为求一个数列的LIS。与动归的n^2复杂度相比。 假 ...
分类:
其他好文 时间:
2016-04-28 16:56:47
阅读次数:
129
原题地址:http://acm.fzu.edu.cn/problem.php?pid=1892
Problem 1892 接水管游戏
Accept: 108 Submit: 498
Time Limit: 1000 mSec Memory Limit : 32768 KB
Problem Description
接水管游戏的规则如下:
1、在...
分类:
其他好文 时间:
2016-04-21 13:48:40
阅读次数:
217