- 博客(4)
- 收藏
- 关注
原创 Manacher算法(O(n)求最大回文字串的长度)(HDU3068)
最近看了一个讲Manacher算法非常好的帖子,地址:http://acm.uestc.edu.cn/bbs/read.php?tid=3258&page=1非常容易懂,简直太神了。自己写了下hdu3068,代码如下:#include #include #include #include using namespace std;char s[211111],c[111111];
2014-12-20 09:49:36
327
原创 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
527
原创 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
448
原创 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
385
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人