dfs与bfs搜索专题
关于DFS和BFS的算法讲解和精彩习题讲解。
HeZephyr
但行好事,莫问前程!
展开
-
HDU—4152 ZZY’s Dilemma(dfs爆搜)
原题链接: http://acm.hdu.edu.cn/showproblem.php?pid=4152测试样例Sample Input4100 200 300 4003100 100 400 500100 -10 50 300100 100 -50 -50Sample Output2 1 3题意: 你有nnn个目标和mmm个习惯,每个目标都有一个对应的要求。现在你的每个习惯对你的nnn个目标都有影响,求最多保存的习惯数量使得达成要求。解题思路: 这道题我们不确定是选择哪种原创 2020-09-23 01:41:41 · 247 阅读 · 0 评论 -
D. Solve The Maze(思维+bfs)Codeforces Round #648 (Div. 2)
原题链接: https://codeforces.com/problemset/problem/1365/D测试样例:输入61 1.1 2G.2 2#BG.2 3G.#B#.3 3#B.#…GG.2 2#BB.输出YesYesNoNoYesYes样例解释对于第一个和第二个测试用例,所有条件都已经满足。对于第三个测试用例,只有1个空单元(2,2),如果将他墙化那么在(1,2)处的好人将无法逃跑出来。对于第四个测试案例,(1,1)的好人无法逃原创 2020-08-21 18:10:28 · 225 阅读 · 0 评论 -
HDU——1198 Farm Irrigation(DFS或并查集)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1198样例:Sample Input2 2DKHF3 3ADCFJKIHE-1 -1 Sample Output23题意: 你有n∗mn*mn∗m块农田,每块农田都是正方形,其中包含各类水管,在每块农田中心都有一个泉源,泉源中的水可顺着水管流向各个地方,现在要求你判断你至少需要多少个泉源?解题思路: 这题出得非常好,我们有两种方法解决这个题目,一是dfs,二是并查集。先说原创 2020-08-14 11:32:36 · 227 阅读 · 0 评论 -
C. Pipes(DFS或思维枚举解决) Codeforces Round #590 (Div. 3)
原题链接:https://codeforces.com/contest/1234/problem/CInput第一行输入一个整数 q (1 <= q <= 10000) — 表示样例个数.每一个样例包含3行. 第一行输入整数 n (1 <= n <= 200000) — 代表网格长度为n. 接下来的两行输入两串数字表示各个空格的线段(1~6).Output对于第 i 个样例 可以连接就输出 “YES” . 不可以就输出 “NO” .ExampleInput57原创 2020-08-05 16:05:43 · 315 阅读 · 0 评论 -
HDU-1010 Tempter of the Bone(DFS奇偶剪枝)
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010题意:给定一个迷宫图和小狗的坐标,每经过一个点就会塌陷,在迷宫中有一道门和一些墙,小狗不能从穿过墙,也不能越界,门会在t秒时打开,问小狗能否走出迷宫。解题思路:此题是判断能够在准确时间内走出迷宫,故我们不能使用bfs,因为用bfs是解决最短时间的问题,所以我们应该利用dfs解决。注意我们要进行奇偶剪枝,不然会超时。AC代码:/**邮箱:2825841950@qq.com*blog:https:/原创 2020-08-04 14:52:26 · 225 阅读 · 0 评论 -
A. Game 23(思维或dfs或bfs多种解决方案) Codeforces Round #547 (Div. 3)
原题链接:https://codeforces.com/problemset/problem/1141/A题意:给你一个整数n,可以有两种变化,扩大两倍或扩大三倍,问要经过多少步可以变成m, 若不行,则输出-1.解题思路:根据题意我们可以知道若n可以变成m,则m一定可以整除n,且整除后得到的一定是2和3的倍数,我们只要统计即可。我们也可以把它看成是一道简单的搜索题,我们可以利用dfs或bfs进行解决,注意一定要细心,且此题要根据m来判断上下界,若已经大于m就没必要进行搜索了,同样也不必设置访问数组,因原创 2020-08-03 12:52:13 · 246 阅读 · 0 评论 -
HDU—2612 Find a way(bfs记录最短路径+遍历求解最佳方案)
Find a wayPass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have many people to meet. Especially a good friend Merceki.Yifenfei’s home is at the countryside, but Merceki’s home is in the center原创 2020-07-26 16:13:26 · 440 阅读 · 1 评论 -
L - 非常可乐——HDU-1495(bfs->优化bfs->数论)
非常可乐原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它们三个之间可以相互倒可乐 (都是没有刻度的,且 S==N+M,101>原创 2020-07-26 15:27:01 · 1939 阅读 · 3 评论 -
K - Oil Deposits(dfs或bfs解决)
Oil DepositsThe GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvComp works with one large rectangular region of land at a time, and creates a grid that divides the land into numerous square plots. It then原创 2020-07-26 09:52:10 · 374 阅读 · 0 评论 -
J - 迷宫问题(bfs求最短路径+递归输出最短路径)
迷宫问题原创 2020-07-25 18:54:19 · 953 阅读 · 0 评论 -
I—Fire(多个bfs搜索)
Fire(多个bfs搜索)题意:Joe被困在迷宫中,可以从边界逃出,但迷宫中有火,火和Joe同时移动,问Joe能否逃出迷宫。解题思路: 该题看起来很困难,因为我们可能会想到两个bfs搜索同时进行, 如果这样就不知道从何处理了。因为这相当于两条盲驴乱撞,很难求出结果。 那么,我们是否可以先进行一个再进行另一个呢?显然是可以的,因为我们关键是要让Joe逃出迷宫,如果我是预言家,我先前就知道了火到达迷宫中各个点的时间,那么火和Joe同时烧,Joe不就可以根据火等等种种因素来判断行径吗?所以,原创 2020-07-25 17:47:40 · 269 阅读 · 0 评论 -
H - Fire Game(玩火游戏)——多源点bfs搜索
###FAC代码:#include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<string>#include<stack>#include<queue>#include<cstring>#include<memory.h>#include原创 2020-07-24 23:10:35 · 399 阅读 · 0 评论 -
G - Pots(罐子)——POJ bfs搜索
Pots题意:给你两个罐子A和B,你可以进行六种操作,让你求得最少的步骤使得A或B的罐子容量为C。解题思路:A和B都在动态变化,我们可以将他们关联起来,利用结构体数组记录当前状态和步骤数,同样,我们要利用辅助数组visited来判断当前状态是否被访问。这里最难的就是记录步骤,然后输出每轮步骤,由于我们要按照原序输出,故我们可以利用栈来实现步骤输出。则此题可解。AC代码:#include<iostream>#include<cstdio>#include<cstdl原创 2020-07-23 19:24:32 · 368 阅读 · 0 评论 -
F - Shuffle‘m Up(洗牌)——bfs搜索
Shuffle’m Up题意:给定两个长度为n的字符串和一个长度为2n的字符串,长度为n的字符串洗牌形成一个新的字符串。如下:先s1+s2,形成一个新的字符串。然后开始洗牌(交叉组合),然后分成新的s1和s2,再进行洗牌,直到形成新的字符串等于我们给出的长度为2n的字符串。解题思路:利用bfs搜索寻找最短洗牌时间,这里我们很难利用辅助数组来判断字符串是否访问,所以我们可以利用C++中的STL中的map容器。AC代码:#include<iostream>#include<cstd原创 2020-07-23 15:59:48 · 260 阅读 · 0 评论 -
E - Prime Path(主要路径)——bfs搜索
Prime PathThe ministers of the cabinet were quite upset by the message from the Chief of Security stating that they would all have to change the four-digit room numbers on their offices.— It is a matter of security to change such things every now and the原创 2020-07-22 23:23:19 · 325 阅读 · 0 评论 -
D - Find The Multiple(找到倍数)——bfs搜索
Find The MultipleGiven a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains only the digits 0 and 1. You may assume that n is not greater than 200 and there is a corresponding m containing no mo原创 2020-07-21 22:45:23 · 276 阅读 · 0 评论 -
C - Catch That Cow(bfs的简单应用)
Catch That CowFarmer 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 point K (0 ≤ K ≤ 100,000) on the same number line. Farmer John原创 2020-07-20 20:15:27 · 331 阅读 · 0 评论 -
B-Dungeon Master(地牢主)
Dungeon MasterYou are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of unit cubes which may or may not be filled with rock. It takes one minute to move one unit north, south, east, west, up or down. You cannot move原创 2020-07-19 01:23:46 · 1071 阅读 · 0 评论 -
A-棋盘问题(dfs的简单应用)
棋盘问题在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。Input输入含有多组测试数据。每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n当为-1 -1时表示输入结束。随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, .原创 2020-07-18 21:16:09 · 542 阅读 · 0 评论