轮廓线dp
SC.ldxcaicai
我很菜=_=
展开
-
bzoj2310: ParkII(轮廓线dp)
传送门 题意简述:给一个m*n的矩阵,每个格子有权值V(i,j) (可能为负数),要求找一条路径,使得每个点最多经过一次且点权值之和最大。 思路:我们将求回路时的状态定义改进一下。 现在由于求的是路径说明有可能出现单插头的情况,于是我们用四进制表示,000对应无插头,111对应左括号插头,222对应右括号插头,333对应单插头。 然后多了一些很多转移,于是我把找左右插头的函数给封装了起来 。 细...原创 2019-01-24 11:10:22 · 194 阅读 · 0 评论 -
bzoj3125: CITY(轮廓线dp)
传送门 题意简述:给一个n∗mn*mn∗m的网格图,有的格子不能走,有的格子只能竖着走,有的格子只能横着走,问用一条回路覆盖所有能走的格子的方案数。 思路: 就是简单的轮廓线dpdpdp加了一点限制而已,考虑几个特判。 只能横着走的,限制它必须有左插头,必须没有上插头 只能竖着走的,限制它必须有右插头,必须没有左插头 然后就差不多了。 然后博主这个废柴因为hash表写错了一个地方调了1h 代...原创 2019-01-24 20:27:19 · 159 阅读 · 0 评论 -
NOIP训练 旅行(轮廓线dp)
传送门 题意简述: 给一个n∗mn*mn∗m的有障碍的网格图,问你从左上角走到左下角并覆盖所有可行格子的路径条数。 思路: 路径不是很好算。 将图改造一下,在最前面添两列,第一列全部能通过,第二列只有最上面的和最下面的可以通过,就转化成了求回路方案数。 代码: #include<bits/stdc++.h> #define ri register int #define change...原创 2019-01-24 21:52:21 · 128 阅读 · 0 评论 -
ural1519 Formula 1(轮廓线dp)
传送门 轮廓线dpdpdp模板题。 题意简述:给一个放有障碍的网格图,问有多少种方法能使所有非障碍格子都在同一条哈密顿回路上面。 考虑用括号序列的写法来状压这个轮廓线。 用000表示没有插头,111表示有插头,且是左括号,222表示有插头,且是右括号。 然后分类讨论一波: 对于当前的格子左边,上边都有插头。 只有左边有插头。 只有上边有插头。 左边,上边都没有插头。 其中第一种还要分类讨论一...原创 2019-01-23 14:53:59 · 369 阅读 · 0 评论 -
hdu1693 Eat the Trees(轮廓线dp)
传送门 题意简述:给一个有障碍的网格图,问用若干个不相交的回路覆盖所有非障碍格子的方案数。 思路:轮廓线dpdpdp的模板题。 同样是讨论插头的情况,只不过没有前一道题复杂,不懂的看代码吧。 代码: #include<bits/stdc++.h> #include<tr1/unordered_map> #define ri register int using names...原创 2019-01-23 14:59:30 · 185 阅读 · 0 评论 -
hdu1964 Pipes(轮廓线dp)
传送门 题意简述:给一个没有障碍的网格图,任意两个格子连通需要花费一定代价,现在求一条覆盖所有格子的哈密顿回路的总权值的最小值。 思路: 跟这道题一毛一样,除了把求和变成求最小值以外。 代码: #include<bits/stdc++.h> #define ri register int using namespace std; inline int read(){ int ans...原创 2019-01-23 15:02:34 · 190 阅读 · 0 评论 -
hdu3377 Plan(轮廓线dp)
传送门 题意简述:给一个n*m的带权矩阵,求从左上角走到右下角的最大分数,每个格子只能经过最多一次,n,m≤9n,m\le9n,m≤9。 思路: 考虑轮廓线dpdpdp,但这道题并没有出现回路的限制因此需要一点巧妙地转化。 我们在加入初始值时规定第一个位置可以来一个插头,然后最后统计到最后一个点的时候特判有没有多余的插头即可。 注意在转移过程中如果有连上两个插头刚好会产生回路的状态要舍弃掉。 代...原创 2019-01-23 16:50:52 · 171 阅读 · 0 评论 -
bzoj4572: [Scoi2016]围棋(轮廓线dp)
传送门 题解可以参见zjjzjjzjj神仙的,写的很清楚。 代码: #include<bits/stdc++.h> #define ri register int using namespace std; typedef long long ll; const int mod=1e9+7; inline int add(const int&a,const int&b){...原创 2019-03-25 23:41:31 · 147 阅读 · 0 评论