插头DP
Fantasyzwj
这个作者很懒,什么都没留下…
展开
-
CDOJ885(插头dp,状态压缩)
题意为给一个n*m的棋盘,有两种木块,1*2的和2*1的,求将整个棋盘放满有多少种方案。n,m都是 小于12的。可以用插头dp来求解,定义状态1表示当前格子有插头,0表示没有插头。显然每个格子只能而且必须有1格插头,那么状态的转移:当前格子的插头状态为00,则由上一状态的00,01,10转移而来;当前格子的插头状态为01,或者10,则由上一状态的00转移过来;当前格子的插头状态为1原创 2014-12-13 12:17:39 · 409 阅读 · 0 评论 -
hdu1693插头DP求多回路
刚学习了插头dp,找了道基础题练练手。用一个n+1位的二进制数表示轮廓线上的状态,1代表有插头,0代表没有插头。那么状态的转移为:如果当前格的两个轮廓线上只有一个插头,那么dp[i][j][k]=dp[i][j-1][k]+dp[i][j-1][k^x^y],否则dp[i][j][k]=dp[i][j-1][k^x^y];代码如下:#include #include #inc原创 2014-12-12 22:15:51 · 342 阅读 · 0 评论 -
HDU4804(插头dp)
这道题的题目大意是这样的:有一个100*10的棋盘,上面有一些格子不能放砖块。现在有两种砖块,1*1的和1*2的。1*1的砖块最少放c个,最多放d个;1*2的砖块没有个数限制,可以水平放,也可以垂直放。砖块与砖块不能重叠。问有多少种方案把整个棋盘放满。解法:用插头dp解决这类问题,用一个二进制数表示轮廓线上的插头状态,0表示没有插头,1表示有插头。因为1*1的砖块有个限原创 2014-12-14 22:40:47 · 487 阅读 · 0 评论