搜索
D.Fu
试问岭南应不好,却道此心安处是吾乡
展开
-
HPU 6008 颜色环——dfs
题目链接,有时可能会崩 输出 输入样例 1 3 4 AAAA ABCA AAAA 输出样例 1 Yes 思路分析,其实就是dfs的一个应用,对于判断是否成环只要判这个点是否已经被标记且,这个点所对应的步数跟上一步所对应的步数差值大于3。 在这里我是先把相同颜色的点都用vector+pair来储存,这样方便查找,原因是在a颜色的第一个储存位置开始深搜时...原创 2018-08-28 18:35:26 · 152 阅读 · 0 评论 -
ZOJ2477 IDA*搜索进阶
问题大意就是给你一个魔方,让你在五步之内还原这个魔方,这个魔方只能让每个面进行顺时针或者逆时针操作,问能否在五步内解决战斗,如果可以,请输出每一步转动的面,以及是逆时针还是顺时针。 分析:对于这个问题,核心在于如何魔方的转动,以及预估函数的判断; 关于预估函数,我的观点是当你想出正确的模拟转动过程后这个预估函数也就很好写了,所以先对魔方转动模拟的分析:首先可以知道每转动一次都会有20个方块改变...原创 2018-12-11 23:08:48 · 314 阅读 · 0 评论 -
codeforces 529div3 problem D
题意是给你一个有向环,让你根据给你的信息求出这个环的序列,给你的信息是这个节点的下面的两个节点 思路:首先应该想到是搜索的方法,在深搜过程中,传递一个当前的节点,和祖宗节点,祖宗节点的作用是确保当前节点的下一个节点也在祖宗节点的后连个节点中,然后就是确保有向,这个我用的是path数组,来维护有向关系,如果dfs返回true,就标记当前孩子节点是由当前节点传递而来。 代码:(如果被hack,我再...原创 2018-12-28 09:37:15 · 123 阅读 · 0 评论 -
hdu2181 哈密顿绕行世界问题 水题 dfs深搜枚举
本身就是一个简单的深搜枚举问题,这里主要是提醒自己关于递归函数关于递归次数的理解 自己脑抽了一直没注意到这个问题,连样例都没过。最后发现问题。 代码: #include<iostream> #include<cstdio> #include<stack> #include<vector> #include<cstdlib> #in...原创 2018-11-27 20:55:03 · 144 阅读 · 0 评论 -
hdu1560 IDA* 进阶搜索
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1560 题意大致就是:给你几个字符序列,然后问你一个最短的序列的长度:这个序列要可以组成那几个字符序列 思路:我一开始想的是双拓扑排序来构建优先关系,但后来失败了。 这道题的思路其实可以理解为一种模拟,假设这里有一个长度为deep的区间,(deep为之前序列的最长的长度)那么...原创 2018-12-04 15:49:37 · 145 阅读 · 0 评论 -
hdu3533 进阶搜索 bfs ESCAPE
题意就是在一个m*n的地图上,有k个堡垒,每个堡垒都会想一个固定的方向射箭,现在问你能否在给定的体力下从(0,0)走到(m,n), 分析:其实这题的难点在于如何判定你当前走到的点是否有箭,一开始我想的是预处理,在输入每一个堡垒时,就对它的箭的路线进行标记,但是后来发现这样很难对两个箭相遇时处理,于是就换成了当你走到某一格时,去四个方向找堡垒看看它是否有射向那个点的键以及能否射中。 这个代码一开...原创 2018-12-02 10:59:19 · 106 阅读 · 0 评论 -
HDU3567 进阶搜索 IDA*算法 八数码【经典】
题意是给你两个八数码,让你输出从第一个八数码到第二个八数码的最短路径,且要求该路径也是最短路径下的字典序最小的路径。 思路:我一开始以为只是简单的在结构体判定一下,让其按照字典序最小的顺序去寻路,后来发现这样做的后果是路径不是最小,嗯。于是就上网查博客,然后就学会了A*算法的升级版IDA A*算法,在这里简单的说一下也加深一下自己的印象:ida算法是A*算法的进化版,它舍弃了a*算法的空间消耗,...原创 2018-11-23 12:15:21 · 211 阅读 · 0 评论 -
hdu1043 A*算法 八数码问题
题意大致就是让你复原一个八数码拼图,输出具体路径 思路:这里使用的是A*算法,A*算法可能比较陌生,迪杰斯克拉法求最短路相比大家都比较熟悉,A*算法就是他的进化,或者说dij算法是A*算法中把预估函数看为0得到的算法, A*算法的主体是一个路径计算函数:f=g+h,其中g表示的从起始点到某一点的耗费距离,h则表示的是从当前点到目标点的预估耗费,一般在搜图中使用曼哈顿距离,而在本题中则是计算八数...原创 2018-11-21 12:47:11 · 256 阅读 · 0 评论 -
hdu1043 双向bfs+康拓展开【经典】
题意大致就是给你一个3X3的矩阵,你要把矩阵转换成12345678的形式,在矩阵中是有一个空缺处可以供你移动滑块的,问你是否可以把给你的矩阵转换成12345678的形式,算了题意自己去看吧,有图更加直接 思路:这里主要考虑这几个方面:第一个如何判断经过一定转换的矩阵是规范矩阵?这里就用到了康拓展开,通过康拓展开来把当前的矩阵转换为一个数值,(哈希的思想)然后去参考是否和规范矩阵的康拓展卡的哈希值...原创 2018-11-15 20:12:06 · 203 阅读 · 0 评论 -
HPU6002 问题——回溯【入门题】
最近我一直在刷dfs的题,所以写这方面的基础题可能较多,可以看我的搜索分类的文章一起学习 题目原链接:http://net.hpuacm.cf/problem/6002 思路解释:读题后发现对于问题的求解可以让计算机一个一个的枚举所以可能且总共只要10个数所以就想到使用深搜的方式来处理这道题目;这也是我刚刚得出的感悟,凡是一个问题的处理可以通过暴力枚举的方式那也就意味着可以使用深搜来处理,...原创 2018-09-04 17:18:37 · 135 阅读 · 0 评论 -
HPU6004——Happy path dfs思想 树形dp的应用
题意就是给定一个有向无环图,问有多少个不同的路径; 题目链接:http://net.hpuacm.cf/problem/6004 可以看出因为是有向无环图所以就可以看成树的形式,然后就是考虑如何计算路径数,对于路径数,可以考虑解决子结构,把一个子结构解决了,也就解决了整个树。 我们可以计算每一个子根节点下的路径数,然后把所有的子根节点累加起来就是结果; 代码: #include<...原创 2018-09-04 13:48:36 · 143 阅读 · 0 评论 -
hdu3085 双向bfs
题意就是给你一个图,图里'.'表示可走,’x'表示墙,‘z'表示怪物,怪物每秒可以向外分裂两个单位,现在你和你的女朋友被困在这个地图里,你每秒可以移动三个单位,你女朋友每秒可以移动一个单位,每一秒,怪物先分裂,然后你们才开始移动,问:你们是否可以在被鬼怪抓到前,相遇? 思路:双向bfs 一个广搜男生的路线,另一个广搜女生的路线,对于男生每秒可以移动三个单位意思是最多移动三个单位,哎,我当初就是这...原创 2018-12-19 08:36:06 · 190 阅读 · 0 评论