搜索-bfs
文章平均质量分 77
zoro_n
我想走得更远
展开
-
hdu 1026 Ignatius and the Princess I
天啦噜,第一个广搜题,还是先看了别人的思路。 才写的。我这个写的还算思路明白,队列。打印用地递归。用栈也行。如果数据太多的话用vetor。#include<iostream>#include<queue>#include<cstdio>using namespace std;const int INF = 10000;struct fuck{ int i,j,hp,step;原创 2016-07-09 09:22:23 · 455 阅读 · 0 评论 -
nswoj 2327 MX的密码锁
点击打开链接这题一看就是简单搜索,,,可是现场没过去,超时。 因为我用了康托展开。然后队友都觉得自己有题能写,然后我就没写。后来学弟过了,,直接存就好。。#include #include #include #include #include using namespace std;mapm;char ch;struct原创 2017-03-20 09:59:58 · 211 阅读 · 0 评论 -
cf 275B Convex Shape
题意: 任意一个B 到另一个B 不能转向超过1次。题解: 直接暴力水题,但是我却错了10来次。 真是日了狗了。#include#include#include#include#include#include#include#include#define LL long longusing namespace std;const int ma原创 2017-04-07 10:13:49 · 548 阅读 · 0 评论 -
nswoj 2326 ZY的密室
点击打开链接搜索,把地图标记多开一维标记钥匙,然后结构中加个vector 记录走到该点打了那些怪兽,这样遍历一下就可以了。#include using namespace std;const int maxn=111;int n,key;char ma[maxn][maxn];int v[maxn][maxn][11];int dir[4]原创 2017-03-22 20:05:33 · 280 阅读 · 0 评论 -
HDU 4771 Stealing Harry Potter's Precious
点击打开链接题意: 在密室中,有n个宝物,n题解:把标记数组多开一维,用二进制记录钥匙拿到没,4把钥匙 就是 1 1 1 1.==15; 暴力bfs 取最短就行 复杂度 16*n^2;#include#include#include#include#include#include#include#include#define LL lo原创 2017-04-08 22:44:46 · 230 阅读 · 0 评论 -
hdu 1728 逃离迷宫
点击打开链接搜索,技巧就是,每走一步,一个方向走到头。 这里有一点值得注意,标记过的并不是不能走了,向一个方向走,如果路上又走过的点,那么下一个点还能扩展。普通的广搜必定GG 。当时试试不行,想写a* 还没写出来,最后也没过。#include#include#include#define ll long longconst int maxn原创 2017-03-31 00:04:16 · 245 阅读 · 0 评论 -
POJ - 1611 The Suspects
点击打开链接题意: 给你N个人,然后m个分组。每个人可能位于多个分组。然后编号0的认识非典。和他一组的都有病,求你找到所有有病的人。题解: 这题我写的好麻烦呀。。。我用的广搜。从0为起点。 然后记录每个人加入的群组分别是多少。然后依次找到有病的人,把他们的群组依次加入队列。#include#include#include#include#inc原创 2017-03-31 23:26:14 · 311 阅读 · 0 评论 -
HDU 4460 Friend Chains 【bfs】【spfa】
点击打开链接题意,求两两朋友之间的最短路中的最大值。我一直理解错题意,能写过才奇怪了!!!!,题解:用bfs 把每个能走的朋友都走一遍,然后记录最远的距离。 最后求最大值。#include#include#include#include#include#include#include#includeusing namespace st原创 2017-04-01 11:07:36 · 314 阅读 · 0 评论 -
hdu 1242 Rescue
点击打开链接题意,迷宫里救公主,打怪兽,等于多走一步,用个优先队列优先最小步数。bfs坑爹的wa一次,交之前,就觉得要是救不到怎么输出,没看到题上说,,就输出个-1.结果gg仔细读题发现,,,#include#include#include#include#include#include#includeusing namespace std;cons原创 2017-04-01 23:25:54 · 219 阅读 · 0 评论 -
HDU 2354 Another Brick in the Wall
点击打开链接题意‘: 邻接的相同字母是一种砖块,可以看成片,然后问你,最少拿掉多少片转可以从顶到底。彻底翻开。题解,直接搜索,暴力bfs,不同步数就加1,dfs 把相同步数的相同砖块压进队。。第一次写的太暴力,TE了, 用优先队列,走过的在判断,最后第一次到的肯定是最优解。#include#include#include#incl原创 2017-04-12 00:55:53 · 359 阅读 · 0 评论 -
CodeForces - 242C King's Path
点击打开链接题意:给你个起点,终点。在无限大的地图上,跑,问你能不能从起点跑到终点。题解: 地图太大。无法用数组。那么怎么办呢, 用stl 。pair型的队列。把步数直接存在标记里面。标记用map,int>. 一个点一个点的标记。剩下的就是简单广搜。 stl真是强大。各种嵌套着用。#include#include#incl原创 2017-04-01 23:43:07 · 374 阅读 · 0 评论 -
CodeForces - 520B Two Buttons
题意: 把一个数,通过两种变化变成另一个数。题解: bfs一下,就行了,注意超界。x*2>maxn 退出。#includeusing namespace std;const int maxn=1e4+100;int v[maxn*2];int n,m;struct node{ int x,step;}u,e,st,ed;int judge(int x原创 2017-03-31 09:05:11 · 326 阅读 · 0 评论 -
CodeForces - 198B Jumping on Walls
点击打开链接题意: 跳跃忍者,两个串就能看成两个墙。然后往上蹦。题解: 广搜,深搜都可以。 重点是走过的不能走。不要以为水堵着就不能走了。因此,bfs 超内存。#include#include#include#include#include#includeusing namespace std;const int maxn=1e5+100;原创 2017-03-29 15:10:57 · 716 阅读 · 2 评论 -
hdu 1175 连连看
超内存,待改。#include#include#include#include#include#define ll long longusing namespace std;const int maxn=1001;int n,m,k,flag;int ma[maxn][maxn];bool vis[maxn][maxn];int dir[4][2]={1,0,0,1,-1,0原创 2017-07-05 09:10:34 · 202 阅读 · 0 评论 -
hdu 1043 eight a*
这题是我写的第一道a*搜索。题意: 八数码,给你个序列,问你能否恢复到一个状态,如果能,求路程。题解: a*搜索。f=g+h。 h为当前状态到终止状态的 哈曼顿距离。 利用优先队列,每次取f最小的, 标记用康托展开。hash 第一发还原创 2017-03-03 11:46:38 · 269 阅读 · 0 评论 -
cf 540-C. Ice Cave
点击打开链接题意: 一个地图,' . '代表冰路,踩一次以后就会变成‘ X ’,X再踩就会掉到下一层。给你一个现成的地图,问你如果想从某个坐标出发,走到某个坐标到下一层能否到达。题解:直接搜索起点到终点能否联通。然后特判重点周围能走的路有哪几种。直接就能得出能否掉下冰层:如果终点周围只有一个位置。 那么到达该点必定走这条路,所以如果重点是X 则yes 否则原创 2017-02-26 10:49:36 · 386 阅读 · 0 评论 -
HDU 3567 Eight II
点击打开链接题意: 还是八数码,和1043相比, 这次给的是两个状态,一前一后。但这都不重要,重点是多了一个字典序,,,,,这真的难到我了。题解:A* 能快速找到最短的方法,但是不能确定字典序,gg。后来我看了网上主要有两种解法,一种双向bfs (比较简单,但是我不明白这样找到的字典序的原理。)第二种,就是与处理一下,X 放在任意位置都跑一原创 2017-03-08 17:09:45 · 169 阅读 · 0 评论 -
poj 3414 Pots
点击打开链接题意: 给你两个水壶,一共有3种方法,6种操作。问你能否使其中某个壶中的水恰好达到指定目标。如果能,求出最小操作次数。题解:很明显直接bfs。一共6个方向,一个一个找。路径存起来,把操作的名字转化到数组中。最后用递归把最优解的操作名称依次输出。#include#include#include#include#inc原创 2017-01-12 16:38:56 · 204 阅读 · 0 评论 -
hdu 1254 推箱子
Problem Description推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个M*N的房间里有一个箱子和一个搬运工,搬运工的工作就是把箱子推到指定的位置,注意,搬运工只能推箱子而不能拉箱子,因此如果箱子被推到一个角上(如图2)那么箱子就不能再被移动了,如果箱子被推到一面墙上,那么箱子只能沿着墙移动.现在给定房间的结构,箱子的位置,搬运工的位置和箱子要被推去的位置,原创 2016-07-18 16:47:54 · 247 阅读 · 0 评论 -
hdu 1548 A strange lift
Problem DescriptionThere is a strange lift.The lift can stop can at every floor as you want, and there is a number Ki(0 <= Ki <= N) on every floor.The lift have just two buttons: up and down.When原创 2016-07-19 09:54:06 · 166 阅读 · 0 评论 -
HDU 1072 Nightmare
NightmareTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9700 Accepted Submission(s): 4720Problem DescriptionIgnatius had a nightmare las原创 2016-07-09 16:53:38 · 303 阅读 · 0 评论 -
hdu 1372 Knight Moves
Problem DescriptionA friend of you is doing research on the Traveling Knight Problem (TKP) where you are to find the shortest closed tour of knight moves that visits each square of a given set of原创 2016-07-20 23:31:08 · 174 阅读 · 0 评论 -
hdu 2717 Catch That Cow
Problem DescriptionFarmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a原创 2016-07-20 23:33:15 · 177 阅读 · 0 评论 -
玲珑杯 round#5 C Coco
点击打开题目题意:给出n个数,再给一个a;求a mod n个数中等于0时,可以使用的最少的数,不能==0则输出-1.题解:如果x则 x%y==x;无意义,所以要把所有的数降序排序,然后枚举。从大向小依次取mod。 用bfs 第一次找到的就是最少步数。用dfs 也能过,但是有人说T了, 但是还是有好多人也过了。#include#原创 2016-11-29 00:39:29 · 227 阅读 · 0 评论 -
poj 2251 Dungeon Master
点击打开链接题意: 给一个立体的迷宫,问能否走出来,能的话输出最短时间。题解:一个三维的迷宫, 走的方向无非和二维差别就是多了上下两个方向,直接广搜跑一边就行了。//#include#include#include#include#define LL long longusing namespace std;const int maxn=原创 2016-12-22 21:44:11 · 258 阅读 · 0 评论 -
hdu 2612 find a way
点击打开链接找到离两个人路程和的最小值。可以广搜一遍,把有kfc的的路中最小值,找出来。也可以两个bfs 求两个距离和最小。坑爹的我之前吧距离和存一个数组,竟然WA了。难道是还有情况他们有人到不了KFC!!。#includeconst int maxn=200+20;char ma[maxn][maxn];#define inf原创 2016-12-25 22:00:27 · 226 阅读 · 0 评论 -
hdu 1495 非常可乐
点击打开链接题意: 给你三个杯子。 a,b,c. 且 a=b+c;问你能不能将a里面的水平分。能的话求出最少次数。不能输出NO ;很明显奇数是一定gg的。直接暴力bfs来一发。每次可走的路可分为6条。 a->ba->cb->a......就过了。另外还有数学规律:原创 2016-12-27 13:02:09 · 315 阅读 · 0 评论 -
poj 1077 Eight
点击打开链接题意:玩游戏,八数码问题。问最后能否走成规律的情形。题解:开始觉得简单,但是突然发现标记很不好搞,后来学了康托展开,才解决这个问题。每走一步,更新状态。但是我写的跑的好慢,#include#include#include#include#include#includeusing namespace std;int fa原创 2017-01-13 17:48:38 · 273 阅读 · 0 评论 -
poj 3984 迷宫问题
点击打开链接求最短路径打印出来。直接bfs 然后寸以下路径递归出来。//#include#include#include#include#define LL long longusing namespace std;int a[10][10];int v[10][10];int dir[4][2]={1,0,0,1,-1,0,0,-1};struc原创 2017-01-10 12:04:51 · 187 阅读 · 0 评论 -
poj 3126 Prime Path
点击打开链接题意:一个四位素数,变到另一个四位的素数,每次只能改变四位数中的某一个,过程中的书必须都是素数。 问最少步数。题解: 最少步数,明显的bfs。 素数打表。 开个4维标记。 爆搜就可。#include#include#include#include#define LL long long#define ull uns原创 2017-01-11 12:35:37 · 166 阅读 · 0 评论 -
Uva Fire!
点击打开链接题意:一个人在迷宫中能否跑出去,如果能跑出去的话,求最短时间。同时迷宫中多出起火,过的蔓延速度与人相同。题解:bfs.因为多出起火,所以把起火的地方全部标记存起来,全部存在队列中,然后再存人。人走的时候判断墙和期货的地方不能走。结果就是最短路或无路可走。英语捉急,没看出来是多出起火,上来直接跑两次bfs。直接gg#include原创 2017-01-11 19:58:13 · 329 阅读 · 0 评论 -
fzu 2150 Fire Game
点击打开链接题意: 问两个人点火,每人能点一次,问两人能否把地图上的草烧完,如果能最短时间是多少。题解:用dfs找一下有多少堆,大于2 直接GG一堆的话,枚举两个点bfs两堆的话,没堆分别枚举最后求最小值,即为所求。开始这样想,但是总感觉这样太麻烦,结果就是这样写的,,,,,#include#include#include#inc原创 2017-01-12 12:27:37 · 205 阅读 · 0 评论 -
POJ 1475 Pushing Boxes 【A*bfs套bfs】
点击打开链接题意:推箱子,这游戏都玩过吧,没玩过也知道规则吧。现在就问你把箱子推到指定位置,的最优情况。这里的最优是:1.推箱子的次数最少,2.推箱子次数相同,走的次数最少。找到该最优解并把路径打出来,推这箱子的移动用大写字母表示,自己走的用小写字母表示。题解:bfs套bfs先搜箱子走的状态,然后搜该状态下人能否到达,原创 2017-07-07 00:04:00 · 299 阅读 · 0 评论