搜索
银之夏雪
这个作者很懒,什么都没留下…
展开
-
poj2386,广搜,深搜
poj2386是一道非常适合练习搜索的题目,下面广搜和深搜的代码如下: 广搜:#include <iostream> #include <queue> #include <string.h> using namespace std; int xx[8][2] = {{0,1},{0,-1},{-1,0},{1,0},{1,1},{1,-1},{-1,-1},{-1,1}}; char s[105]原创 2015-12-28 21:01:05 · 842 阅读 · 2 评论 -
hdu1584蜘蛛牌(dfs)
这道题刚开始一直没有读明白是什么意思,后来发现就是蜘蛛纸牌的规则嘛,然后只能从小的移向大的,如果你要移的被标记了,证明这张牌已经被移过了,你移到它的下一张就行了,其实就是一个全排列的过程,其实移动牌就只有1到2,2到3,3到4.。。。。9到10这九种,全排列只是把这九种分别放在第几步来操作而已#include <iostream> #include <algorithm> #include <str原创 2016-10-06 15:42:09 · 533 阅读 · 0 评论 -
poj1321棋盘问题(dfs)
这道题目和八皇后那种问题有点类似,dfs传的参数里面有行和到目前为止一共放了几个棋子,不过后者也可以不用传递,行是一定要传递的,通过这个来枚举列,最关键的一点是这个题目是问k个棋子的摆放方法,k不是n,那么如果当前这一行都没有满足条件的,或者在回溯过程中,这一行剩下的几列里面没有满足条件的,那么就跳出循环,递归到下一行,但是此时的棋子数量是不变的,然后这道题目差不多就是这么做的了#include <原创 2016-10-06 15:24:39 · 329 阅读 · 0 评论 -
nefu1121第k个序列(dfs)
非常水的搜索题,我终于会那么一点点了,加油#include <iostream> #include <string.h> using namespace std; int a[1005]; bool vis[1005]; int n,k,sum; bool flag; void dfs(int pos) { if(flag) return; if(pos==n+1)原创 2016-10-02 16:13:42 · 250 阅读 · 0 评论 -
hdu1016 Prime Ring Problem(dfs)
这个题目虽然是dfs的初级题目,但是我对dfs几乎是一窍不通,所以写这个题也挺费劲的,不过写了这个之后再写别的题目就很容易了,这题是要找素数环,一个非常基础的深搜#include <iostream> #include <string.h> using namespace std; int prime[41]={0,0,1,1,0,1,0,1,0,0,0,1,0,1,0,0,0,1,0,1,0,0,原创 2016-10-02 15:55:58 · 237 阅读 · 0 评论 -
hdu1180诡异的楼梯(bfs)
这道题的意思是哈利波特要从S走到T,中间有那种会改变方向的楼梯,经过楼梯的话一共只用一秒,但是可能会存在有特殊的楼梯会一秒改变一次方向,也就是说可能会等一秒,不会有两个楼梯连续挨着,还有很重要的一点就是,你不能再楼梯上呆一秒,所以当你找到楼梯的时候,不能把他直接压进队列,要直接对它进行处理,然后把处理过的压进队列,这点一定要切记,再者就是在遇到楼梯的时候,先用步数的奇偶来判断此时楼梯的方向,然后看此原创 2016-10-02 15:49:41 · 893 阅读 · 0 评论 -
hdu1241 Oil Deposits(dfs&&bfs)
这又是一个练习bfs和dfs的非常好的题目,找油井的个数,8个方向只要有,就算同一个,问有多少个下面是dfs的,没什么可说的#include <iostream> #include <string.h> using namespace std; char s[105][105]; int n,m; int xx[8][2]={{0,1},{0,-1},{1,0},{-1,0},{1,-1},{1,1原创 2016-09-23 10:12:50 · 1436 阅读 · 0 评论 -
hdu5876 Sparse Graph(补图的最短路)
这道题目是补图最短路,是点(数据很大)然后把原图变成另一半,然后求源点到其他点的最短路,这道题如果硬来的话一定是超时的,这是不用想的,毕竟200000个点的话,边本来是5500条,但是要是找补图的边的话那就是20万*20万-5500,大概是这么多,这实在是太多了,肯定是不行的,所以呢暴力枚举所有点,如果与起点相连的边不在原图中,那么距离就是起点的距离+1,然后用BFS再把这些点设为起点,再枚举剩下的原创 2016-09-11 21:48:36 · 392 阅读 · 0 评论 -
hud5040 InstrusiveBFS+优先队列
这道题的题意是,你从M点到T点,然后中间有开始可能W,E,N,S四个方向的摄像头,摄像头的照射空间是它本身和它前面的那个格子,当你下一秒要去的格子正在被摄像头照射时,你要不然就是等一秒(这里是重点,就是按理来说摄像头下一秒会离开这个点,然后你恰好可以去,然而实际这道题却并不是这样,只能等),要不然就是藏在箱子里用3秒过去,当正好是摄像头时,则只能用箱子用三秒通过,那么最短的时间是多少呢,如若不能则输原创 2016-03-20 19:41:02 · 337 阅读 · 0 评论 -
Codeforces 405 E. Graph Cutting ( DFS )
这道题是用dfs搜索的,如果有奇数条边那么直接就No solution,其实一共就两种情况,第一种是当前节点有有偶数个子节点,那么直接子父子就行了,否则的话就剩下一个子那么就找他父亲和他父亲的父亲一起配对就行了 我们先找到now的相连的点的数量,然后对这些相连的点进行dfs,直到找到叶子节点,如果找到了就输出,没找到就放进队列里然后返回,然后大概就是这样一个过程,最近采用vector写代码,感觉还是原创 2016-03-16 21:05:56 · 614 阅读 · 0 评论 -
hdu5927Auxiliary Set(dfs)2016东北赛现场赛
这题当初在东北赛做现场赛的时候看题干里面有LCA,然后就一直以为是LCA,然后怎么套模板也都感觉实现不了,而且数据量还非常大,100000个点,100000条询问,不好弄,回来之后问了一下,发现是搜索,就是你先搜索一遍,求出每个点的父亲是谁,儿子有几个,和他所在的深度,为什么要求这个呢,请往下看,当你求出每个点有多少个儿子之后,每次询问的时候查这些不重要的点,看看是否有2个以上的儿子,如果是就满足,原创 2016-10-08 11:40:04 · 541 阅读 · 0 评论