![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
bfs专题
Sxy_Limit
活着.
展开
-
P2060 [HNOI2006]马步距离
一道神奇的BFS前置芝士1.BFS(DFS):这次真的不是我懒,我也不知道DFS怎么写.2.STL中的set或者map.具体做法数据范围非常大,直接BFS肯定是一片黑色(指TLE,MLE),直接贪心又有可能会出一些莫名其妙的问题,所以,大范围贪心,小范围BFS的思路就出现了(不要问我是怎么出现的).如这样一张图,要从红点到蓝点,可以先顺着橙色点的路径到绿色的框中(框的...原创 2020-01-09 14:00:07 · 140 阅读 · 0 评论 -
P2845 [USACO15DEC]Switching on the Lights 开关灯
USACO的又一道搜索题前置芝士1.BFS(DFS)遍历:用来搜索.(因为BFS好写,本文以BFS为准还不是因为作者懒)2.链式前向星,本题的数据比较水,所以邻接表也可以写,但是链式前向星它不香吗.具体做法对于一个点,它可能有不止一个房间,虽然可以开一个[x1][y1][x2][y2][x_1][y_1][x_2][y_2][x1][y1][x2][y2]的邻接矩...原创 2020-01-09 08:01:51 · 247 阅读 · 0 评论 -
P3820 小D的地下温泉
这道题的考点比较多.前置芝士1.BFS(DFS),这两种算法在这道题中并没有什么特别突出的地方,基本就是自己看心情写(本文以DFS为准,所以我心情是好是坏呢?)2.连通块,可以将每一个温泉看作一个连通块,这样就变成了一个图上问题.3.并查集,在判断图中元素是否相连时需要用到(具体下文会讲到).具体做法先用搜索将每个温泉(连通块),处理出来,并且统计出每个连通块的大小.在...原创 2020-01-07 20:31:57 · 132 阅读 · 0 评论 -
P2243 电路维修
看了眼题解,貌似没有和我的思路一样的…所以就来写一篇题解…首先我不会什么双向BFS也懒得写最短路…所以,就一个BFS 闯遍天下先看题:感性理解一下…貌似如(1,2),(2,1),(1,4),(4,1)都到不了 虽然这个么什么用好了,进入主题首先,BFS是一个队列,为了保证结果的真确性,所以存当前花费的数组必须符合单调性,不然就没法达到最短路的效果了(开始就是没注意单调,调了2个小时...原创 2019-04-20 21:34:36 · 380 阅读 · 0 评论 -
P2730 魔板
这题和八数码和九数码太像了QAQ实在不会就看我以前的题解吧话说这题坑点还是挺多的#include<bits/stdc++.h>using namespace std;const int Max=9*9*9*9*9*9*9;int now[Max][8],come[Max],r[8],u[Max],Do[Max];int ans[8];bool boo[9][9][9][...原创 2019-03-02 08:54:08 · 183 阅读 · 0 评论 -
P2749 夜空繁星
USACO的搜索,不知道为什么和二维凸包扯上关系QAQ刚看到这道题时无从下手…貌似很难呀,大概翻了一下题解…发现了一个玄学定理: 每一个点和别的点的距离相加,一样的图形总是一样的QAQ 前方水题警告接下来就简单了…const z:array[1..8,1..2]of -1..1=((1,0),(0,1),(-1,0),(0,-1),(1,1),(1,-1),(-1,1),(-1,-1));...原创 2019-02-05 14:36:20 · 142 阅读 · 0 评论 -
P3610 奶牛导航
这题算是P1126 机器人搬重物的升级版QAQ,就是把他当成两只牛来算就好了const z:array[1..4,1..2]of -1..1=((-1,0),(0,1),(1,0),(0,-1));var i,j,k:longint; n:longint; bo:array[0..21,0..21,0..21,0..21,1..4,1..4]of boolean; //...原创 2019-02-10 19:06:15 · 17780 阅读 · 0 评论 -
P1141 01迷宫
这题可以说是一道很基础的bfs了,不多说,上代码:const z:array[1..4,1..2]of -1..1=((1,0),(0,1),(-1,0),(0,-1));var i,j,k:longint; m,n:longint; ans:array[0..1002,0..1002]of longint; b:array[0..1002,0..1002]of bo...原创 2018-12-16 21:04:40 · 116 阅读 · 0 评论 -
P1363 幻想迷宫
这道题可谓有好多解法,既然讲究效率,我还是选择了bfs。bfs比较难下手,但理解题目后感觉还是挺简单的。思路现将地图扩展成四份。O=>OO OO如果超过边界则到对应边的对应位置。代码:const z:array[1..4,1..2]of -1..1=((-1,0),(0,-1),(1,0),(0,1));var i,j,k:longint; m,n,h,t:lo...原创 2018-12-16 20:52:12 · 162 阅读 · 0 评论 -
P1825 玉米田迷宫
有了上次题目看错的教训后再不敢随便看题了usaco太坑,这题绝对不水,传送门还特别玄学自然代码短不了…代码:const z:array[1..4,1..2]of -1..1=((1,0),(0,1),(-1,0),(0,-1));var i,j,k:longint; m,n:longint; pdx,pdy:longint; csmx,csmy:array['A'.....原创 2018-12-16 16:21:42 · 210 阅读 · 0 评论 -
P1519 穿越栅栏
usaco里的搜索其实还是不错的,这自然也不是一道水题(其实是我题目看错了)这类题目一般都是一题多解,既然如此垃圾的我自然用bfsconst z:array[1..4,1..2]of -1..1=((1,0),(0,1),(-1,0),(0,-1));var i,j,k:longint; a,b:array[0..1000,0..1000]of boolean; p:arra...原创 2018-12-16 16:08:29 · 283 阅读 · 0 评论 -
广搜(BFS)
广搜是一种搜索,在最优解问题方面比dfs更佳,主要用于迷宫最短路类问题。这是一种队列的应用,符合队列先进先出(first in first out)的特点。重点:1.分清楚 队列 和 栈 (first in last out)的不同2.熟悉广搜模板3.利用广搜实现一些深搜题目4.在一些没有明确点出解法时可以想到用广搜5.利用广搜拿某些 dp 或 贪心 部分分6.广搜中嵌套一些其他算...原创 2018-12-16 12:52:55 · 420 阅读 · 0 评论 -
P1451 求细胞数量
这是一道典型的广搜裸题,不多说,上代码:const z:array[1..4,1..2]of longint=((-1,0),(1,0),(0,-1),(0,1));var i,j,k,t,h,q:longint; a:array[-20..1000,-20..1000]of char; x,y,s:array[-2..1000]of longint; b:array[...原创 2018-12-16 12:43:08 · 243 阅读 · 0 评论 -
死亡洞穴(cave)
题目背景在 caima 的 RPG 游戏中,控制着两个人 VV 和 JJ。 这次 VV 和 JJ 掉入了一个死亡洞穴,洞穴是一个 N*M 的矩阵。之所以称之 为死亡洞穴,是因为在这个矩阵中有一些死亡十字。(如下图中的+)….+++..+.+.V+.J+由于 VV 和 JJ 被分撒在了两地,而 JJ 还受了重伤,你需要让 VV 赶到 JJ 所 在的地方。为了尽量少的受死亡十字的影响,VV...原创 2018-12-16 09:04:35 · 2766 阅读 · 0 评论 -
P1162 填涂颜色
这题感觉难度评低了,真正做时才发现还是有点难度的。方阵内只有一个闭合圈,圈内至少有一个0。所以简单点,但还是来一个去掉这句活也可以A的吧。代码:const z:array[1..4,1..2]of longint=((0,1),(1,0),(-1,0),(0,-1));var i,j,k,m,n,t,h:longint; x,y:array[0..10000]of longi...原创 2018-12-15 22:08:48 · 163 阅读 · 0 评论 -
P3956 棋盘
其实这道题目还是有点难度的,趋于对bfs的信心,还是勇敢地用bfs码。这题特判的地方比较wei详情看代码注释。因为要保留最优解在一张二维表,所以时间并不会太短。效率不高代码:const z:array[1..4,1..2]of -1..1=((-1,0),(0,-1),(1,0),(0,1));//四个方向var i,j,k:longint; a:array[0..101,0.....原创 2018-12-15 21:54:25 · 217 阅读 · 0 评论 -
P3818 小A和uim之大逃离 II
这题目其实还是一道典型的bfs解迷宫问题,唯一的难度在于可以使用魔法,而且只能使用一次。因此我们需要多建立一张表存使用魔法后的情况。代码:const z:array[1..4,1..2]of -1..1=((1,0),(-1,0),(0,1),(0,-1));//四个方向var i,j,k:longint; m,n:longint; h,t:longint; ...原创 2018-12-15 21:41:08 · 255 阅读 · 0 评论 -
P2199 最后的迷宫
刚看到这道题其实还是有点懵,但仔细看后才发现这是一道水题。迷宫一类题目一般都是用bfs为主,因为一但搜索答案便可以退出,比dfs快多了。这题考点估计是可以看见,而不是碰到,这其实只要再用一个二维数组记录,即有多个答案。代码:const z:array[1..8,1..2]of -1..1=((1,0),(0,1),(-1,0),(0,-1),(1,1),(1,-1),(-1,1),(-1,...原创 2018-12-15 21:21:05 · 325 阅读 · 0 评论