
ACM--插头DP
focus_best
这个作者很懒,什么都没留下…
展开
-
FZU1977
FZU1977 Pandora adventure依然是一个N*M的矩阵,但是矩阵中有3种格子,第一种必走的格子(必须走1次),第二种不走的格子(不能走),第三种可选格子(可以选择走还是不走),现在要你求一共有多少种方式走一个规则圈,包括了所有必走的格子,不含不走的格子,可以选择包括可选格子.输入:首先是T (T≤100)表示实例个数.接下来每个实例第一行为N和M(1≤N, M≤12),然原创 2014-03-04 00:45:27 · 1686 阅读 · 0 评论 -
ZOJ 3256
ZOJ 3256 Tour in the Castle现在给你一个N*M的矩阵,要求你从左上角走到左下角,且矩阵中的每个格子都要走仅1次,问你有多少种走法,输出对7777777求余之后的结果。输入:包含最多19组实例。每个实例一行,为N和M (2 输出:输出路线总数%7777777的结果。分析:假设现在有一个4*4的矩阵如下图:1,1原创 2014-03-07 13:48:11 · 941 阅读 · 0 评论 -
HDU 4285
HDU 4285 circuits给你一个N*M的矩阵,矩阵有好格子和坏格子,要求你求一共有多少种情况使得K条回路包括了所有的好格子,但是回路不能嵌套.输入:首先是一个T,表示输入实例个数.对于每个实例,第一行是N,M和K (2 输出:ans%1000000007分析:依然是插头DP,只需要考虑当前格子的插头轮廓线状态集合.当插头状态为112233,时,1和1,2和2,3和3可原创 2014-03-07 23:19:26 · 1184 阅读 · 0 评论 -
ZOJ3466
ZOJ3466 The Hive II 有一个N行8列的蜂窝,有一些格子里有蜜蜂,有些没有,现在要你在这个蜂窝里找几条回路使得这些回路里的格子正好有蜂蜜,且所有格子都在一个回路里,问你有多少种方法找到这些回路。蜂窝里的小网格用两个大写字母标记其坐标.如下图:输入:包含多组实例。每个实例第一行是N(0 输出:输出构成这些回路的方法数,保证结果在int范围内。分析:原创 2014-03-06 17:16:05 · 897 阅读 · 0 评论 -
POJ3133
POJ3133 Manhattan Wiring现在有一个N*M(2输入:包含多组实例。每个实例第一行为N和M,然后是数字矩阵。输入以0和0结束。输出:输出最小的短长度,如果不存在这样的两条线,就输出0.分析:插头DP问题,只要按常规的插头DP问题来处理即可,但是要分别特殊处理2和3格子,然后用f[]记录最小长度即可。插头只有3种,0插头(表示无),2插头和3插头。会不会出现4原创 2014-03-05 21:36:16 · 1267 阅读 · 0 评论 -
URAL1519
ural1519formula 1给你一个n*m的矩阵,矩阵中有一些格子是坏的,现在要你在矩阵中画一个环,这个环要经过矩阵中所有好的格子一次,问你有多少种画法.分析:典型的插头dp问题,详见cdq的论文>,这里我用的一般解法做的,一般解法速度没有特殊括号表示法快,但是通用性很好.AC代码:328ms#include#include#includeusing names原创 2014-03-03 13:41:39 · 1079 阅读 · 0 评论 -
POJ1739
POJ1739 Tony's Tour现在有一个N*M(1输入:输入包含多组实例。每个实例的第一行为N和M,接下来是一个N*M的字符矩阵,其中‘#’表示障碍格,‘.‘表示好格。以一行0 0表示输入结束。输出:输出有多少种行走方法。分析:插头DP问题,且和HDU3377很类似:http://blog.youkuaiyun.com/u013480600/article/details/2047原创 2014-03-05 16:05:06 · 941 阅读 · 0 评论 -
HDU1964
HDU1964 PIPES现在给你一个矩阵,矩阵中都是好格,要你求一条代价最小的回路,这条回路走过了矩阵的所有格子仅一次。任意两个相邻的矩阵格子之间有费用(0到9的一个整数)。如上面这个4*3的矩阵,空白的地方表示的是矩阵必须要行走的格子,所有数字的地方表示的是矩阵两个相邻格子之间行走的花费,#的地方是没有路也没格子的。输入:第一个数字的T,表示实例个数。接下来每个实例,第一行是r原创 2014-03-04 11:35:22 · 925 阅读 · 0 评论 -
HDU3377
HDU3377 Plan现在给你一个N*M的矩阵,矩阵每个格子都有一个分数,现在要求你从矩阵左上角走到矩阵右下角去能获得的最大分数。输入:包含多组实例。每个实例首先是一行N和M,然后是这个矩阵,矩阵中的每个分数在[-2000,2000]内。输出:从左上角走到右下角的最大分数。分析:除了左上角和右下角外其他格子都是可选择的,不能构成一个圈。我们在这N*M的矩阵上再加一行一列(加第一行原创 2014-03-04 19:04:45 · 1339 阅读 · 0 评论 -
HDU1693
HDU1693Eat the Trees给你一个N*M的矩阵,矩阵中有好格子和坏格子,坏格子不能走,问你能找出多少种方法在这个矩阵中画规则的圈(可以有多个圈).输入:首先是一个T(1输出:以 Case 1: There are 3 ways to eat the trees.这种形式输出结果.保证结果不超过int的上限.分析:此题就是URAL1519的变形,不过这题可以允许有多个圈原创 2014-03-03 16:42:58 · 973 阅读 · 0 评论 -
ZOJ 3213
ZOJ 3213 Beautiful Meadow现在有一个N*M矩阵,你走在矩阵上的好格可以获得上面的分数,坏格子不能走且分数为0.现在你可以从矩阵上的任何一个好格子出发,然后在矩阵中任何一个好格子结束,搜集分数,且每个格子只能走一次.问你最多能得到多少分.输入:首先是一个T (1 输出:输出最大分数.分析:增加标记位标记当前状态中独立插头已经有几个了,最多只能有2个.如果该原创 2014-03-07 20:48:03 · 1044 阅读 · 0 评论