状态压缩DP
文章平均质量分 83
ElephantFlySong
这个作者很懒,什么都没留下…
展开
-
POJ3311(TSP问题,状态压缩DP)
题目链接:http://poj.org/problem?id=3311分析:由于题中明确说了两个城市间的直接可达路径(即不经过其它城市结点)不一定是最短路径,所以需要借助邻接矩阵首先求出任意两个城市间的最短距离。这一步骤使用Floyd最短路径算法即可。然后,在此基础上来求出遍历各个城市后回到出发点的最短路径的距离,即求解TSP问题。考虑搜索算法:这种解法其实就是计算排列子集树的过程。从0点原创 2016-07-23 17:26:14 · 3162 阅读 · 2 评论 -
POJ1185炮兵阵地(状态压缩DP)
题目链接:http://poj.org/problem?id=1185二进制存储每一行的状态,1表示可以放炮兵,0表示不可以放炮兵。处理出数组 stk[i] ,表示第 i 种炮兵之间距离不小于2的所有的方案,保证炮兵之间不能横向攻击。处理出数组 num[i],表示状态 stk[i] 中的炮兵数量。处理出数组 cur[i],表示第 i 行高地的位置,1表示有高地,0表示无高地。原创 2016-07-25 20:19:41 · 705 阅读 · 0 评论 -
HDU3001(状态压缩TSP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3001与TSP问题有所不同,这里每个点可以走两次。TSP问题每个点只能走一次用二进制来状态压缩,这里可以走两次,就用三进制来状态压缩。需要注意的问题是,可能会有重边,所以在输入的时候注意对重边取min。其实,对于图的问题,只要没有说保证没有重边,还是考虑一下重边的处理吧。状态:dp[S][i原创 2016-08-02 10:09:28 · 319 阅读 · 0 评论 -
POJ3254(状态压缩DP)
题目链接:http://poj.org/problem?id=3254与POJ1185类似,不过这里每一行的状态只收前一行影响,所以用 f[i][t] 表示第 i 行状态为 stk[t] 时的总方案数,那么根据加法原理,f[i][t] = f[[i][t] + f[i-1][j],j 表示第 i-1 行所有合法的切与状态 stk[t] 不相邻的状态,记得取模。还有就是对每一行的状态判断是否原创 2016-08-03 10:21:22 · 411 阅读 · 0 评论 -
POJ2411(状态压缩DP)
题目链接:http://poj.org/problem?id=2411搜索到众多题解,有的过于简单看不懂,有的冗杂看着烦,经过挑选 这篇 还是蛮不错的。题解中 s 和 ss 兼容是指:能不能通过一种方式,把第 i-1 行空余的方格填满的同时让第 i 行达到状态 s 。代码是抄的题解的,具体的注释还是看题解吧#include#includeusing namespace std;原创 2016-08-05 17:40:31 · 402 阅读 · 0 评论