POJ2411】的更多相关文章

hdu2167 http://acm.hdu.edu.cn/showproblem.php?pid=2167 给定一个N*N的板子,里面有N*N个数字,选中一些数字,使得和最大 要求任意两个选中的数字不相邻,相邻包括上下,左右和对角线相邻. 由于N<=15,用程序判断了一下,每一行的有效状态<1600个,如果记录这些状态,然后每一行枚举当前行的上一行的状态那么极端下有1600*1600*15的复杂度,TLE 所以卡在这里很久,想不到怎么优化. 然后看了别人的代码知道了用邻接表存储哪两个状态是相…
[POJ2411]Mondriaan's Dream(轮廓线DP) 题面 Vjudge 题解 这题我会大力状压!!! 时间复杂度大概是\(O(2^{2n}n^2)\),设\(f[i][S]\)表示当前第\(i\)行向下伸展出去的状态为\(S\) 那么每次枚举一下当前行的放法,进行转移就好了. 然后就长成了这个样子(不要在意我强行缩减代码长度) 尽管这不是我们本题的重点,然而我还是放份代码 #include<cstdio> #include<cstring> int n,m;long…
http://poj.org/problem?id=2411 (题目链接) 题意 一个$n*m$的网格,用$1*2$的方块填满有多少种方案. Solution 轮廓线dp板子.按格dp,对上方和左方的格子的占用情况进行讨论转移.0表示已放置,1表示未放置. 细节 LL,滚动清空数组. 代码 // poj2411 #include<algorithm> #include<iostream> #include<cstdlib> #include<cstring>…
AC传送门:http://vjudge.net/problem/POJ-2411 [题目大意] 有一个W行H列的广场,需要用1*2小砖铺盖,小砖之间互相不能重叠,问有多少种不同的铺法? [题解] 对于每一行有w个位置,所以每一行都有0-2w-1种状态. 对于当前行的状态s,它是由前一行的状态s'转化过来的,显然,对于该行某个位置j: 如果前一行该位置为0,那么该位置可以竖放 即 0-> 1 如果前一行连续两个位置为0,那么这两个连续位置可以横放 即00-> 00 如果前一行该位置为1,显然该位…
POJ2411 http://poj.org/problem?id=2411…
在此我向各位博友求助,特别想知道除了HihoCoder上面的结果要对1e9+7取余之外,这两道题还有什么其他的问题,都是骨牌覆盖问题,都是状态压缩+dp,为什么我能过poj2411的程序过不了HihoCoder,还不是其他诸如TimeLimited,而是Wrong Answer,这个问题我想了很久,还是不知道是怎么回事,如果有神通广大的博友知道答案,希望你能告诉我.顺便说一下,HihoCoder给的那个hint只看懂了一部分递推的公式,其中满足的那个条件还是不懂. 两个题目的连接地址: http…
状压DP Description Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, after producing the drawings in his 'toilet series' (where he had to use his toilet paper to draw on, for all of his paper was filled with squares…
题目大意:一个宽w高为h的棋盘,现在要用1*2的多米诺骨牌不重叠地覆盖整个棋盘,问有多少种方案. h<11,w<11 分析:1.h*w若为奇数,则无解. 2.按行处理.处理第i行时,保证前i-1行全部覆盖,当前行的状态为state. 以f[i][state]表示处理到第i行,第i行的状态为state,且前i-1行全部填满的方案数. f[i][state]=∑f[i-1][state2] 需要统计有哪些state2可以转移到state.这个可以用dfs来预处理出来. #include<io…
Description Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, after producing the drawings in his 'toilet series' (where he had to use his toilet paper to draw on, for all of his paper was filled with squares and r…
第一道轮廓线dp,因为不会轮廓线dp我们在南京区域赛的时候没有拿到银,可见知识点的欠缺是我薄弱的环节. 题目就是要你用1*2的多米诺骨排填充一个大小n*m(n,m<=11)的棋盘,问填满它有多少不同的方法. 一个可行的解法就是轮廓线dp. 假设我们从上往下,从左往右去填,那么我们会发现,假如我们当前填的是(i,j)格的时候,在它前面的(i',j')其实是已经确定一定填了的,所以实际上没有填的时候处于轮廓线的部分,在这里没有具体 1 1 1 1 1 1 x x x x             如上…