状态压缩dp
文章平均质量分 79
byijie
这个作者很懒,什么都没留下…
展开
-
poj 2541 binary witch
做kmp专题遇到了这题,专题里说用逆序kmp,我觉得会超时...找了一份逆序kmp代码试了一下0ms!.. 不清楚为什么,求解释... 我觉得正确的做法是状态压缩dphttp://www.cnblogs.com/swm8023/archive/2012/08/03/2621288.html,这个人说的靠谱! dp[i][j]代表长度为i,状态为j的最晚出现位置,当前字符为第i个的话,需要i-2原创 2012-12-06 17:32:03 · 917 阅读 · 0 评论 -
POJ2411 状态DP...
好像状态dp分为两步,第一步是找出所有可行状态,最好找出转移关系来(毕竟是压缩的状态,不好转移,直接打出转移关系来就好办了,如果转移比较简单,可以忽略此步),第二步就是dp了,有了转移关系dp过程也就比较清晰了。 这道题就是状态dp,把图案分成网格,然后打出前后两列的状态对应关系,然后普通dp即可。 经典的状态dp问题应该是TSP...MTSP吧...http://blog.sina.com.原创 2013-03-07 21:42:21 · 969 阅读 · 0 评论 -
POJ3411 状态dp+松弛转移
状态转移有两种,一种是对于一个状态v找出这个状态能够来自哪些状态u,然后更新v,但有时这种转移方法不太好用,那么考虑另一种转移方法,对于一个状态u,我们考虑状态u能够影响的所有状态v,然后不断松弛,像spfa一样... 这题就是第二种转移方法。 另外Inq标记数组确实能节省时间,毕竟减少了节点入队次数... 这题不加inq16ms,加上inq 0ms #include #include #i原创 2013-03-08 21:24:14 · 1171 阅读 · 0 评论 -
HDU 4336 Card Collector 状态压缩+概率DP
state是压缩的状态,0代表已取,1代表未取, dp[state]代表在state这个状态取完全部卡片的期望步数,然后枚举在这个状态下取的卡片,就可以实现转移,这个dp过程就结束了,答案为dp[(1 下面我们思考另外一种dp思路,dp[state]代表达到state状态所需的期望步数,然后枚举能够到达state状态的状态,这样理论上也能实现转移,答案是dp[0]。但是我个人数学能力有限,算不出原创 2013-03-11 19:48:03 · 945 阅读 · 0 评论 -
hdu4539 排兵布阵 状态DP
这题和poj1185http://poj.org/problem?id=1185很像... 首先枚举了一下,对于一行来说有效状态最多169,那么可以DP[i][j][k],第i--1行状态为j第i行状态为k的ans。然后可以枚举j,k,l,DP[i][j][k]=max{DP[i+1][k][l]}+count[k],时间是100*169^3,但是由于部分位置不能摆放士兵使得实际时间远远小于上面原创 2013-03-31 12:21:30 · 1742 阅读 · 1 评论 -
hdu4640 && hdu4281
hdu4281是多旅行商问题,hdu4640是三个旅行商,这不太影响解法,主要差别在于hdu4640要求不仅仅是每个节点访问一次,而且要每个节点只能经过一次,这样求single[state][u]的时候就不能直接枚举下一个点了,而是要根据边枚举,且下一个到达的点必影响state。 hdu4281: #include #include #include #include #include #in原创 2013-08-03 21:26:22 · 979 阅读 · 0 评论