- 博客(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
349
原创 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
563
原创 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
476
原创 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
409
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅