
插头dp
文章平均质量分 87
xymscau
这个作者很懒,什么都没留下…
展开
-
poj 1739 Tony's Tour
楼教主的男人八题之一,这是我切的第一题,昨天搞定了括号表示法,今天趁热打铁,这题很容易想到把左下和右下两个格子连起来,构成一条哈密顿回路,就和上一题一样,不过这条路有一条必须经过的路径,我们需要特殊处理,做法有两种,我是添加了一层,然后特殊处理最后一层,后来发现小hh的解法说不用,又写了另一种解法,就是将最后一层的状态变成初始状态,然后从底往上dp,这种写法比较好,简单,而且状态比第一种写法少。原创 2012-10-01 17:33:32 · 1688 阅读 · 0 评论 -
poj 3133 Manhattan Wiring 插头dp
这题的和上一份报告那题有点像,不过是确定了起点和终点,而且分别有两对,按照小hh的说法就是确定了起点和终点就相当于回路问题,另一边相当于虫洞连接起来,不过他说起点为左括号,终点为右括号,这还是有点问题的,昨晚思考了一下,如果,起点和终点的位置在其他位置,而不是边界,想想楼教男人8题的那题,如果位置在中间该怎么处理,左括号和右括号的设置方法肯定不可行,而是应该像上篇报告那题要独立插头,但是这个独立插原创 2012-10-08 18:52:32 · 1531 阅读 · 0 评论 -
uva10572 black&white 插头dp
终于切了第一道广义路径的题目,也确实感到比较复杂,最小表示法的优势也可以体现出来,因为这题,昨天的澡到现在才洗完,按照小hh的思路,用一条轮廓线记录联通状态,注意这里的轮廓线已经不是m+1啦,因为我们不需要左插头了,每个格子可以插至多4个插头,另外一条轮廓线表示当前的染色状态,这个要m+1因为还要保留左上格子的颜色,然后我们对于4个格子的颜色讨论,左,上,左上,当前,一共16中情况,8种是对称的,原创 2012-10-10 13:58:15 · 1543 阅读 · 0 评论 -
hdu 1693 插头dp
题意:在n*m的矩阵中,有些格子有树,没有树的格子不能到达,找一条或多条回路,吃完所有的树,求有多少中方法。这题是插头dp,刚刚学习,不是很熟悉,研究了好几天才明白插头dp的方法,他们老是讲一些什么轮廓线啊,插头啊什么的,刚开始完全不知道这些事干什么的,看完cdq的大作后也是原创 2011-09-07 13:11:38 · 6146 阅读 · 0 评论 -
插头dp的几个模板
/*ural1519求经过所有可行点的哈密顿回路的个数括号匹配法,转移有点复杂,但是时间空间比较小*/#include#include#include#include#include#include#include#include#define LL long longusing namespace std;const int maxn=30001;int n,m,原创 2012-10-10 17:08:09 · 4592 阅读 · 0 评论 -
hdu 4285 circuits
被这题卡了一整天,测试无数的数据,和对拍数据无误,几乎崩溃,后来重新敲时,发现自身写法的漏洞,果不其然,就是这个潜伏多年的bug,在ural,poj,以及我的vim下得出的数据都是一样的,我现在有些明白,为什么以前出现过在G++AC的题目,到C++是wa,应该是写法上的漏洞,编译器不同结果是不同的,改完这个bug,就AC了,rank排到第一去了。Run IDSubmit T原创 2012-10-05 15:54:57 · 861 阅读 · 0 评论 -
fzu 1977 Pandora adventure
这题比上题更简单,没有确定的起始点,是求回路,不过有些点是必须走的,那么这些点上必须有插头,否则不能转移,最后两个插头合并只能在所有的必须点扫描后。RunIDSubmit TimePIDLanguageTimeMemLen4665162012-10-05 12:52:391977GNU原创 2012-10-05 15:46:27 · 890 阅读 · 0 评论 -
hdu 3377 Plan
昨晚熬夜把它给切了,1y,这题可以相当于poj 1739+hdu 1964的加强版,我的做法是在最左边和最下边加上一层外围,权值全为0,然后就是插头dp了,不过要注意的是,题目不要求全部格子都经过,所以有一边插头的格子一定要有另一边,而没有插头的格子可以选择放两个插头,或者不放,另外要再注意下加的那两层的插头状态是确定的。Run IDSubmit TimeJudge S原创 2012-10-04 10:05:32 · 883 阅读 · 0 评论 -
ural 1519. Formula 1
插头dp第二题,debug了一个晚上,导致今天中秋都没有看到月亮,不过总算搞定了,思维习惯上打错个东西,找的好久,思路其实和前面轮廓线扫描差不多,但是要保证在最后一个合并最后两个插头,这样才能保证只有一条回路,单纯的二进制扫描法不能完成这个任务,所以要用括号表示法,cqd的ppt说的很明白,我就不说明啦,要用三进制表示,我们用二进制的两位来表示三进制,这样状态有2^(26),太多啦,就算空间允许,原创 2012-10-01 00:24:03 · 922 阅读 · 0 评论 -
zoj 3256 Tour in the Castle
这题是poj1739的改编版,在那份题解里我用了两种写法,这题的m很大,显然快速幂,BFS所有状态,不过矩阵也相当的大,我算了最大状态是114这么多,所以我优化了快速幂,预存幂矩阵,然后n^2快速幂,跑了600+,那个第一的200+ms是有减少状态么,还是有其他优化方法,我被他时间空间完胜了,Orz。Run IDSubmit TimeJudge StatusProb原创 2012-10-03 00:21:43 · 895 阅读 · 0 评论 -
zoj 3466 The Hive II
小hh插头dp http://www.notonlysuccess.com/index.php/plug-dp-complete/ 的第二题。这题比第一题难处理一点,但是方法是一样的,用轮廓线扫一遍就好了,每个可行格子有且仅有两个插头,要分奇偶格子处理两条轮廓线就像这样,然后层层扫描即可Run IDSubmit TimeJudge Status原创 2012-09-28 10:53:27 · 953 阅读 · 0 评论 -
zoj 3213 Beautiful Meadow 插头dp
求任意路径可以得到的最大权值和,这题和前面的题目不一样,插头的起点和结束点都不是确定的,所以要加一个插头表示单插头,表示起点或终点,接着就是恶心的转移,一直漏一个条件,后来看小hh的代码发现问题,终于过了。Run IDSubmit TimeJudge StatusProblem IDLanguageRun Time(ms)Run Memory(KB)原创 2012-10-07 19:00:27 · 1087 阅读 · 0 评论