
ACM--状态压缩DP
focus_best
这个作者很懒,什么都没留下…
展开
-
POJ2411 状态压缩DP
POJ2411 Mondriaan's Dream给你n*m(1矩阵,要求用1*2的多米诺骨牌去填充,问有多少种填充方法。分析:首先我们定义如下这种填充表示方式:如果一个骨牌是横着放的,那么它所在的两个方格都填充1.如果它是竖着放的,那么它所在的两个格子中,上面的那个填0,下面的这个填1.如下图所示: 由此可以得到断言:该矩阵的骨牌摆放方法和该矩阵的二进制表示法是一一对应的。原创 2014-02-20 20:17:00 · 9812 阅读 · 8 评论 -
POJ 2923 Relocation(状态压缩DP+DP:01背包)
POJ 2923 Relocation(状态压缩DP+DP:01背包)http://poj.org/problem?id=2923题意:有N件物品和两辆车,每辆车有个重量上限,现在要搬家且每次从老家到新家都是两车同时出动,问你至少需要多少次能搬完?分析: 首先本题先要求出所有物品合法的组合,即两车能一次装下的物品组合,然后在利用状态压缩DP求解. 首先对原创 2014-04-03 12:02:21 · 1183 阅读 · 0 评论 -
HDU4026
HDU4026Unlock the Cell Phone现代手机都有解锁模式,比如在一个3*3的键盘上,你可以选定一个起始点,点上去然后滑动到它相邻的点上。比如起始为1可以滑动到2,4,5,6,8上,因为1到这些点之间都没有其他点。但是你不能直接从1滑动到7或3,因为2或4你还没走过。当你走到了一个点之后,你就能从它上面划过去了。如下面第3个图1->5->9->6->4,因为5已经走过了,所以原创 2014-03-01 12:46:16 · 992 阅读 · 0 评论 -
HDU2167
HDU2167Pebbles给你一个N*N(3分析:第i行怎么取只和第i-1行的取法有关,令d[i][S]表示第i行的取法是S时能取得最大数之和.d[i][S]=max{d[i-1][S1] + get_v(i,S)} 其中S1和S是兼容的,get_v(i,S)得到的是第i行为状态S时从第i行能获得的数总和.初值:d[0][S]=x,S表示第0行的所有合法状态.其他d初始化为-1,原创 2014-03-01 18:58:32 · 896 阅读 · 0 评论 -
HDU3681
HDU3681 Prison Break一个机器人身处N*M的矩阵中,它想要越狱逃出来,这个矩阵由N行M列的字符组成,含义如下:(1) S表示空格子(2) F表示机器人的起始位置(3) G表示能量池,对于同一个能量池只能使用一次,且经过能量池的时候可以选择用或者不用,用的话能量就会变满.(4) D表示坏格子,机器人不能走D格子(5) Y表示开关格子,机器人必须把所有开关格子原创 2014-02-27 18:51:54 · 1217 阅读 · 2 评论 -
HDU3920
HDU3920 Clear All of Them I现在你在一个大地图上,给出你所在的坐标(x,y),然后给出2*n个敌人的坐标,要你消灭这2*n个敌人.你手上有一把激光枪,每次射击你都可以任意选择两个目标,激光先从你的位置到第一个目标,然后再从第一个目标到第二个目标的位置,这样就消灭了这两个目标,激光枪消耗的能量是它总共走过的距离.你可以选择先攻击哪个目标.你的位置不可以变.每原创 2014-02-28 12:42:10 · 849 阅读 · 0 评论 -
POJ1038
POJ1038Bugs Integrated, Inc.现在给你一个N*M的矩阵,然后矩阵有K个坏了的格子,矩阵中黑格子表示坏的格子,要你在所有好的格子中选出尽量多的2*3(或3*2)小矩阵,问你最多能选多少个这样的小矩阵.输入:首先是一个t,(1输出:输出最多能选多少个2*3小矩阵.分析:由题意我们可知假设从上到下开始摆放2*3(或3*2,后文统称为小矩阵)矩阵,那么当我们放原创 2014-02-26 12:19:21 · 2509 阅读 · 1 评论 -
ZOJ3471
ZOJ3471 Most Powerful有n个原子,任意两个原子互相撞击会产生一定的能量,并且被撞击的那个会消失,然后要你求当n个原子发生了n-1次撞击后能产生的最大能量.输入:包含多组实例.每个实例的第一行是N(2输出:对于每个实例输出能量最大值.分析:本题和TSP问题很相似,使用类似的状态定义方式解即可.令d[i][S]表示当前在原子i且已经用过的原子集合为S(S包括i)原创 2014-02-26 18:36:42 · 1017 阅读 · 0 评论 -
POJ2288
POJ2288Islands and Bridges现在有n个点和m条边的无向图,每个节点有一个权值vi,我们要求这个图的最优三角哈密顿路,哈密顿路是一条经过所有节点一次的路。最优三角哈密顿路是这么定义的:对于一条哈密顿路c1c2…cn,我们首先令sum = sum(vi),1对于所有存在的哈密顿路,具有最大sum值的那些就是最优三角哈密顿路。输入:首先是T(1输出:输出对应的原创 2014-02-24 22:07:41 · 1036 阅读 · 0 评论 -
HDU3001
HDU3001Travelling现在有一个具有n个顶点和m条边的无向图(每条边都有一个距离权值),小明可以从任意的顶点出发,他想走过所有的顶点而且要求走的总距离最小,并且他要求过程中走过任何一个点的次数不超过2次。输入:包含多组实例。每个实例第一行为n(1输出:输出他需要走的最短距离,如果不存在这样的路,输出-1.分析: 首先本题的图一定要是一个连通的无向图,否则肯定不存原创 2014-02-24 17:17:10 · 1284 阅读 · 0 评论 -
POJ1185
POJ1185炮兵阵地司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色原创 2014-02-23 17:59:28 · 1146 阅读 · 1 评论 -
POJ3311
POJ3311 Hie with the Pie给你一个有n+1(1输入:包含多组实例。每个实例第一个为n,然后是n+1行矩阵,每行矩阵有n+1个数字,第i行第j个数字表示从i-1到j-1号点的距离。当输入n=0时表示输入结束。输出:最小距离。分析;本题和经典TSP旅行商问题类似,但是TSP要求每个节点仅走过1次,本题要求每个节点至少走过一次。同样的是本题也用状态压缩DP来解。原创 2014-02-22 17:27:17 · 2205 阅读 · 0 评论 -
POJ3420 递推/状态压缩DP +矩阵幂加速处理
POJ3420 Quad Tiling现在我们有一个4*n(1输入:包含多组实例,每组为n和m(0输出:输出摆放总数对m求余的结果。分析:做本题首先要知道它的基础题型。见:http://blog.youkuaiyun.com/u013480600/article/details/19612171这道题由于数据规模很大,且是4*n类型,所以不能用轮廓线DP来解。解法一:递推+矩阵加速原创 2014-02-21 22:52:49 · 2416 阅读 · 1 评论 -
POJ3254
POJ3254Corn Fields有一个n*m的矩阵,这个矩阵以01的形式给出,其中标为1的格子可以选择,标为0的格子不能被选。现在要你在可以选的所有格子中选择一种方案,使得被选的任意两个格子不邻接(即无公共边)。问你共有多少种选择方案?(被你选中的格子总数没有要求,一个格子都不选也可以作为一个方案)输入:第一行为n*m(1输出:方案总数%10^8.分析:本题先假设以行为计算原创 2014-02-22 12:01:37 · 1004 阅读 · 0 评论 -
POJ2663
POJ2663 Tri Tiling现在给出一个3*n(0分析:解法一:首先这道题n的规模比较小我先试下用轮廓线DP来解。(轮廓线DP见:http://blog.youkuaiyun.com/u013480600/article/details/19499899)注意POJ的这道题目测试数据当n==0时输出的是1,否则WA。AC代码:47MS#include#include原创 2014-02-21 11:23:18 · 2321 阅读 · 0 评论 -
HDU 4182 Judges' response(01背包+TSP状态压缩DP)
HDU 4182 Judges' response(01背包+TSP)http://acm.hdu.edu.cn/showproblem.php?pid=4281题意:本题有两问:首先是有n-1个物品,每个物品一个重量w,然后每个人有一个重量上限M,问你最小需要派几个人才能收集完所有物品.第二问是:人和所有物品都有一个初始坐标,且人数无限制,在第一问的基础上,不超过人的负重的情况下,要原创 2014-04-03 23:17:51 · 1122 阅读 · 0 评论