![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
bfs
文章平均质量分 63
Frozen_Guardian
已退役菜鸡Acmer
展开
-
Gym - 101173H Hangar Hurdles(bfs+克鲁斯卡尔重构树)
题目链接:点击查看题目大意:给出一个 n∗nn*nn∗n 的矩阵,有些位置存在障碍物,现在有 qqq 次询问,每次询问给出两个点 st=(x1,y1),ed=(x2,y2)st=(x1,y1),ed=(x2,y2)st=(x1,y1),ed=(x2,y2),需要回答从 ststst 开始推箱子,可以推到 ededed 的最大箱子的边长是多少题目分析:首先不难想到预处理出以每个点为中心时,可以放置箱子的最大边长,可以通过二维前缀和+二分的思路在 O(n2logn)O(n^2logn)O(n2logn) 的原创 2021-08-23 11:21:15 · 319 阅读 · 0 评论 -
CodeForces - 1534E Lost Array(bfs+交互)
题目链接:点击查看题目大意:初始时给出一个长度为 nnn 的序列,每次可以询问 kkk 个位置的异或和,现在需要以最少的询问获得整个序列的异或和题目分析:因为是异或,我们只关心每个位置被询问的次数是奇数还是偶数,不妨设置一个集合,将询问次数为奇数次数的位置都放进来那么我们初始时的状态是“集合大小为 000”,目标状态是“集合大小为 nnn”,可以通过 bfsbfsbfs 去扩展,对于某个状态 xxx 来说,假设我们需要选择 jjj 个集合内的数,那么自然需要选择 k−jk-jk−j 个集合外的数,集合原创 2021-06-18 20:53:35 · 227 阅读 · 0 评论 -
CodeForces - 1484D Playlist(循环链表+bfs)
题目链接:点击查看题目大意:给出一个长度为 nnn 的数列,规定其是一个首尾相接的环,不断的遍历该环,如果满足 gcd(ai,ai+1)==1gcd(a_i,a_{i+1})==1gcd(ai,ai+1)==1 的话,将删除掉 ai+1a_{i+1}ai+1 且 iii 的位置向后迭代 111,现在要求按照顺序输出被删除的位置题目分析:和鑫爷去年挂的一个题的模型是一样的,鑫爷的那个题是双线链表每次可以更新出 444 个点,而这个题目是循环链表每次可以更新出 111 个点对于本题来说,如果点 xx原创 2021-05-23 20:54:50 · 275 阅读 · 0 评论 -
CodeForces - 1520G To Go Or Not To Go?(bfs)
题目链接:点击查看题目大意:给出一个 n∗mn*mn∗m 的矩阵,其中:−1-1−1:该位置是个墙000:该位置可以通过x(x>0)x(x>0)x(x>0):该位置是传送门对于任意两个传送门,可以花费其权值和的代价相互到达也可以花费 www 向上下左右四个方向移动问从 (1,1)(1,1)(1,1) 到 (n,m)(n,m)(n,m) 的最小花费是多少题目分析:一开始想到了对传送门建一个超级源点,将所有传送门都与超级源点相连然后跑迪杰斯特拉,但是这样就有 1e71e71原创 2021-05-09 20:44:54 · 405 阅读 · 0 评论 -
CodeForces - 1076D Edge Deletion(最短路+贪心/最短路树+bfs)
题目链接:点击查看题目大意:给出一张 n 个点 m 条边的带权无向图,设 d[i]d[ i ]d[i] 为从点 1 到点 i 的最短路,现在要求保留最多 k 条边,使得新图中 d′[i]=d[i]d'[ i ] = d[ i ]d′[i]=d[i] 的点尽量多题目分析:仍然是两种思路,比较简单的一种思路就是先用迪杰斯特拉求出最短路树,此时树上有 n - 1 条边,每选择一条边,就会使得满足d′[i]=d[i]d'[ i ] = d[ i ]d′[i]=d[i]的点加一,所以直接在最短路树上 dfs 或原创 2020-12-19 15:41:44 · 242 阅读 · 1 评论 -
CodeForces - 1196F K-th Path(最短路+思维)好题
题目链接:点击查看题目大意:给出一个 n 个点,m 条边的无向图,需要求出图中第 k 短的路径题目分析:k 是 400,本来以为是需要思考 k * n 或 k * m 的算法,搞了半天最后原来是 k^3 的算法。。首先考虑,先把图中前 k 小的边全部拿出来,比较显然的是,答案最坏也不可能超过第 k 小的这条边然后对于这 k 条边涉及到的 2 * k 个点单独拎出来跑弗洛伊德,然后将 k * ( k - 1 ) / 2 条路径的权值排个序求第 k 小就是答案了妙啊代码://#.原创 2020-12-02 22:02:25 · 350 阅读 · 6 评论 -
牛客 - 牛半仙的妹子Tree(按询问分块+RMQ求LCA)
题目链接:点击查看题目大意:给出一棵有 n 个节点的树,需要执行 m 次操作:1 x:点 x 被染色,且随后每一秒染色的区域都会向外扩展一个单位 2 x:清空所有的染色 3 x:问点 x 是否被染色题目分析:因为可以离线,所以考虑按照询问分块,首先用序列自动机求出每次操作后的下一次操作 2,然后分两种情况处理:如果两次操作 2 的间隔大于 sqrt( m ),直接暴力 bfs 去模拟,每一块的时间复杂度为 O( n ),均摊之后是 O( sqrt( m ) * n ) 如果两次操作 ..原创 2020-10-27 21:19:12 · 268 阅读 · 0 评论 -
2020CCPC(威海) - Labyrinth(bfs+思维)
题目大意:给出一个 n * m 的矩阵,在矩阵内部最有 k 个黑洞(表示不可行走的区域),现在给出 q 次询问,每次询问给出两个点 ( x1 , y1 ) 和 ( x2 , y2 ) ,问从点 ( x1 , y1 ) 到点 ( x2 , y2 ) 的最短路是多少题目分析:本题一个很重要的思维点:设 x1 < x2 同时 y1 < y2:如果矩形区域 [ x1 : x2 ] X [ y1 : y2 ] 内不存在黑洞,那么答案就是其曼哈顿距离 否则一定存在着一条最短路,经过某个黑洞 {..原创 2020-10-26 20:40:27 · 1571 阅读 · 4 评论 -
中石油训练赛 - Equidistant(bfs)
题目链接:点击查看题目大意:给出一棵 n 个点的树,再给出 m 个关键点,问是否存在着一个点到 m 个关键点的距离都相同,存在的话输出任意一个即可题目分析:bfs 按层展开维护贡献就好了,记录一下每个点在同一层最多被多少个关键点覆盖代码:#include<iostream>#include<cstdio>#include<string>#include<ctime>#include<cmath>#include<.原创 2020-10-10 18:01:44 · 309 阅读 · 0 评论 -
HDU多校7 - 6853 Jogging(bfs+结论)
题目链接:点击查看题目大意:在二维平面中有一个点 ( x , y ) ,规定 “ 好点 ” 的定义是,gcd( x , y ) > 1 ,现在从点 ( x , y ) 开始,每一次都能等概率的选择:去周围八个方向中的“好点” 停留在原地不动现在问在走无穷多次步数后,能够从点 ( x , y ) 出发再回到点 ( x , y ) 的概率是多少题目分析:比赛时稍微打了个表,感觉是暴力bfs出所有点然后计算答案,主要是答案不会计算,就放掉了,因为 1e12 以内的相邻两个素数之差最大也不过几原创 2020-08-12 03:23:15 · 605 阅读 · 4 评论 -
ICPC Pacific Northwest Regional Contest 2016 - Buggy Robot(bfs+dp)
You are trying to program a robot to navigate through a 2-dimensional maze and find the exit.The maze can be represented as a grid with n rows and m columns. Some grid cells have obstaclesthat the robot cannot pass. The other cells are empty, which the .原创 2020-06-22 01:14:19 · 310 阅读 · 0 评论 -
CodeForces - 1353D Constructing the Array(bfs)
题目链接:点击查看题目大意:给出一个长度为 n ,初始时全部为 0 的数组 a ,后续进行 n 次操作,每次操作找到最长的连续 0 ,如果有多个则选择位置最靠左边的,将这组连续0 的,最中间位置的数赋值为 i ,i 为第 i 次操作,输出最后的数列题目分析:一开始没什么思路,用线段树区间合并暴力模拟的,果不其然 TLE 了,其实自己手算模拟几次就会发现,每个位置至多会被遍历到一次,且是按照深度扩展的,所以我们可以用 bfs + 优先队列 不断扩展就好了,具体实现可以看代码代码:#in..原创 2020-05-15 13:48:38 · 277 阅读 · 0 评论 -
CodeForces - 1350E Orac and Game of Life(bfs)
题目链接:点击查看题目大意:给出一个 n * m 的 01 矩阵,矩阵每一秒都会迭代,迭代规则如下:如果对于 ( x, y) 格子而言,四周相邻的格子 ( xx , yy ) 均满足 maze[ x ][ y ] != maze[ xx ][ yy ] ,则 maze[ x ][ y ] 不变 否则 maze[ x ][ y ] ^ = 1给出 q 个询问,每个询问问格子 ( x , y ) 在第 t 秒迭代后的数字为多少题目分析:直接用题解的话来说吧,满足规则 1 的点我们称为 goo..原创 2020-05-13 17:19:41 · 403 阅读 · 0 评论 -
CodeForces - 1341E Nastya and Unexpected Guest(01bfs)
题目链接:点击查看题目大意:给出一个区间 [ 0 , n ] ,初始时位于点 0 ,现在需要到达点 n ,问最少需要多长时间接下来是限制,首先有一个红绿灯,当绿灯亮起的时候,必须保证移动,当红灯亮起的时候,必须在“安全岛”上等红灯,红绿灯会按照亮 g 秒绿灯,再亮 r 秒红灯,再亮 g 秒绿灯 .... 满足一直循环接下来引入“安全岛”的概念,顾名思义,“安全岛”就是分布在 [ 0 ...原创 2020-04-25 01:57:06 · 723 阅读 · 2 评论 -
HDU - 3247 Resource Archiver(AC自动机+状压dp+bfs)
题目链接:点击查看题目大意:给出 n 个目标串和 m 个病毒串,要求构造出一个长度最短的,且包含全部 n 个目标串,但是不能包含任意一个病毒串的01字符串,输出其最短长度题目分析:比较综合的一道题目了,以为是涉及到目标串和病毒串之间的关系,所以读完题目后不难想到先将这些字符串都扔到AC自动机里去,因为 n 非常小,所以可以考虑状态压缩,于是最初的想法就是壮压dp直接转移,dp[ state...原创 2020-02-21 18:22:39 · 318 阅读 · 0 评论 -
CodeForces - 1301F Super Jaber(bfs)
题目链接:点击查看题目大意:给出一个n*m的矩阵,每个点都有一个颜色,颜色的种类不超过40种,如果想从一个点到达另一个点,有两种方法:花费一个单位的时间从某种颜色闪现到相同的颜色 花费一个单位的时间走到相邻的格子中现在给出 q 个询问,每次询问回答从起点到终点的最短时间题目分析:因为 q 高达 1e5 ,所以限制了每次询问必须在 O(1) ~ O(logn) 的时间复杂度内回答,所...原创 2020-02-15 03:20:51 · 397 阅读 · 0 评论 -
牛客 - 街机争霸(bfs)
题目链接:点击查看题目大意:给出一个n*m的迷宫,要求从起点到终点的最少时间,与一般情况不同的是,这个题目规定有 p 只僵尸,每只僵尸有固定的方向且会沿着相应的方向游走 k 个单位,然后原路返回,我们不能占据僵尸路径上的点,否则下一秒就会被僵尸吃掉,问此时的最少时间题目分析:今下午比赛的时候读完这个题觉得是个bfs,看过的人比较少以为挺难写的,于是就去睡觉了。。其实加了个无关紧要的条件,还...原创 2020-02-14 03:18:55 · 231 阅读 · 0 评论 -
LightOJ - 1243 Guardian Knights(最小费用最大流+bfs)
题目链接:点击查看题目大意:给出一个n*n的地图,其中:#:代表墙 .:代表空格子 大写字母:代表骑士 m:代表谷仓现在要求每个谷仓都要至少被一个骑士保护,规定骑士保护某个谷仓的代价是骑士到达谷仓的最短路,现在问如何分配才能让花费最小题目分析:模型抽象出来就是个最小费用最大流的模板题了,关键在于如何转换模型,费用流的建图比较简单,一开始就说一下吧:源点->每个骑士,流...原创 2020-01-03 16:30:55 · 240 阅读 · 0 评论 -
洛谷 - P4011 孤岛营救问题(bfs+状态压缩)
题目链接:点击查看题目大意:给出一个n*m的迷宫,其中有一些边为不可逾越的墙,有一些边为不同型号的门,而钥匙会分布在迷宫的不同位置,求从点(1,1)到点(n,m)的最短时间题目分析:出现在网络流里的一道题目。。但是一道很裸的bfs+状压,因为不同门的类型给的特别少,只有10种,如果bfs的话时间复杂度也才n*m*2^10,直接搜索就好了注意一下几个坑点:钥匙是永久性的而不是一次性的...原创 2019-12-20 10:12:14 · 252 阅读 · 0 评论 -
POJ - 2965 The Pilots Brothers' refrigerator(bfs+路径输出/思维+位运算)
题目链接:点击查看题目大意:给出一个4*4的矩阵,每个点都代表一个开关,'+'代表关,'-'代表开,每次操作可以任意改变一个开关(x,y)的状态,但代价是x行和y列的开关都要一起改变状态,题目要求将所有的开关都打开,问最少操作次数以及哪些点需要操作题目分析:思维不够,暴力来凑,看到这个题目只有4*4=16个格子,也就是一共只有2^16种情况,直接上bfs遍历所有状态就好了,可以用一个数字保...原创 2019-12-03 14:50:36 · 234 阅读 · 0 评论 -
PAT (Advanced Level) 1004 Counting Leaves(树的遍历)
题目链接:点击查看题目大意:给出一个树状家谱,问每一代没有后代的节点个数题目分析:其实就是个简单的树的遍历,奈何读不懂题。。遍历到每一层然后记录没有后代的个数即可,我是习惯性的建了无向图,遍历的时候没有后代的条件是度为1并且前置父节点不是-1,然后需要对根节点特判一下,特判一下是否只有一个根节点,两种代码,都写来练练手:DFS:#include<iostream>#...原创 2019-10-29 11:23:31 · 246 阅读 · 0 评论 -
HDU - 3571 HDU CakeMan(bfs+最短路必经点)
题目链接:点击查看题目大意:给出一个n*m的地图:‘D’表示小贩 ‘S’表示小贩的家 ‘C’表示城管 ‘X’表示墙 ‘.’表示路 ‘数字’表示小贩需要多停留几秒钟现在城管发现了小贩,小贩会选择任意一条最短路回家,城管想知道是否至少有一个点是小贩的必经之路,城管最少需要多久才能到达小贩的必经之路,请计算时间题目分析:这个题目就是最短路必经点+bfs,一共要跑五遍bfs:迪...原创 2019-10-17 00:43:45 · 479 阅读 · 0 评论 -
HDU - 1043 Eight(bfs打表)
题目链接:点击查看题目大意:八数码经典问题,给出一个3*3的矩阵,其中随机分布着1~8的数字以及一个空位(我们用x来表示空位),在整个矩阵中,每一次操作都可以将x和他附近的方块互换,问经过多少次操作可以将当前的状态变为顺序状态,即1 2 34 5 67 8 x求所需操作的最小次数以及每次的步骤题目分析:一看到这个题目首先想到每一种情况都可以表示为一种...原创 2019-10-14 18:30:17 · 238 阅读 · 0 评论 -
HDU - 1728 逃离迷宫(bfs)
题目链接:点击查看题目大意:给出起点和终点和最多的拐弯次数k,问拐弯次数能否在小于等于k的情况下从起点到达终点题目分析:bfs,不过和以往的不太一样,以往的bfs都是每次加入一个点,而这个题目的限制条件是拐弯次数,那么我们可以每次加入一行或一列的点,因为这些点的拐弯次数都是相同的,需要注意一点的是,在while循环中不能判断vis情况,因为如果当前点早就被遍历过了,只能说明该点已经达到最优...原创 2019-09-22 10:39:08 · 250 阅读 · 0 评论 -
中石油训练赛 - 斗地主(bfs)
题目链接:点击查看题目大意:给出斗地主的规则,以及最终分数,求出最少需要进行几局游戏题目分析:bfs爆搜即可,因为数据范围比较小,我一开始没多想,直接18种情况全部打上去,交了一发T掉了。。bfs被卡T?于是就剪枝,剪了半天还是T,最后拿出秘密武器,用无序map+600进制维护了vis数组,就A了,因为不想出现负数,而且a,b,c的数据范围都比较小,直接都加上300变成正数然后按照600进...原创 2019-09-18 12:46:46 · 340 阅读 · 0 评论 -
HihoCoder - 1828 Saving Tang Monk II(bfs+动态规划/bfs+优先队列)
题目链接:点击查看题目大意:孙悟空要走迷宫去救唐僧,给出n和m约束迷宫大小:迷宫中:S代表起点 T代表终点 B代表氧气区,经过可以获得一罐氧气,最多储存5罐氧气 #代表毒气区,经过需要花费2个时间单位,并且消耗一罐氧气 P表示加速区,经过可以减少一个时间单位 .表示正常路段题目分析:写过买盐的那个题之后,写这种题就很顺手了,这个题需要开一个三维的数组维护状态,其中两维用来描...原创 2019-09-05 10:26:47 · 197 阅读 · 0 评论 -
HDU - 4784 Dinner Coming Soon(bfs+动态规划+优先队列)
题目链接:点击查看题目大意:有n个点,m条边,一个人要在时间T内从1走到n,并在途中进行交易,获得尽可能多的钱。这个人身上最多能带B包盐,每到一个地方都需要交纳一定的钱数,并且经过一定的时间才能通过,每个地方的盐价不同,在这个地方他可以对身上的盐进行买/卖/不买也不卖这三种操作,要求无论任何时候身上的钱数都不能小于0。除此之外,还有K个平行世界,编号为0~K-1,这个人初始化在第0个世界,并且...原创 2019-09-05 08:50:55 · 227 阅读 · 0 评论 -
HDU - 5335 Walk Out(bfs+路径输出+贪心)
题目链接:点击查看题目大意:给出一个矩阵,要求从(1,1)点走到(n,m)点,要求途径数字依次组成的二进制数字最小题目分析:这个题我的心路历程真的是非常坎坷的,就来稍微记录一下吧,或许对以后做题能有帮助。这样一个中等难度的搜索题,从前一天中午做到了第二天中午,断断续续差不多思考+实现用了少说四个小时了,一直在思考,一直在优化,最后A掉的那一刻感觉收获也是蛮大的。因为整个迷宫只...原创 2019-09-23 12:43:21 · 211 阅读 · 0 评论 -
POJ - 3322 Bloxorz I(bfs+状态设计)
题目链接:点击查看题目大意:模拟Bloxorz小游戏找出最优解,简单说一下规则,给出一个n*m的矩阵,其中,"#"代表墙,"X"代表起点,"O"代表终点,"E"代表脆弱道路,即承受不住立着的方块,"."代表普通道路题目分析:因为方块总共有三种状态:立着(占1格)、竖着(占2格)、横着(占2格),我们可以将占两个的两个状态压缩到一格中,竖着的(上下分布)我们规定有效方格在上面,横着的(左右分...原创 2019-09-24 17:35:42 · 383 阅读 · 0 评论 -
POJ - 1475 Pushing Boxes(bfs套bfs)
题目链接:点击查看题目大意:要求模拟推箱子游戏的过程,输出最优路径,最优路径要求箱子移动的次数最少,次为人移动的次数最少题目分析:这个题可以简化成两个相互依附的东西同时走迷宫,因为首先要求箱子移动的次数最少,所以我们在最外层设置一层bfs用来搜索箱子的最优解,其次是要求人的移动次数最少,我们可以在内层设置一个BFS用来搜索人的最优解,这样的时间复杂度是n*n*m*m,题目给出的n和m最大为...原创 2019-09-25 09:08:34 · 350 阅读 · 0 评论 -
POJ - 3635 Full Tank?(bfs)
题目链接:点击查看题目大意:给出一个无环无向图,每个点都可以看做一个补给站,油价是固定的,每条路都要消耗一定的油量,给出q个询问,问油箱大小为c,从起点到终点所需要的最小花费题目分析:可以用bfs+优先队列直接爆搜,我们令每个状态都是一个二元组(x,y)代表的是在x点剩y升油,则每个点(u,f)都可以更新为(u,f+1)和(v,f-w)两个状态,因为c给的很小,只有100,总的时间复杂度最...原创 2019-09-25 10:31:33 · 310 阅读 · 0 评论 -
HDU - 3085 Nightmare Ⅱ(双向bfs)
题目链接:点击查看题目大意:给出一个迷宫,一个男孩和一个女孩还有两只鬼,男孩每秒钟走3格,女孩每秒钟走1格,鬼每秒钟向四周分裂2格,问男孩和女孩能否在鬼占领迷宫之前汇合,能的话输出汇合时间,否则输出-1题目分析:双向bfs模板题,不过在我看来双向bfs和单向bfs没什么区别,就是格式上有点不一样,对于这个题目每次男孩bfs一次,然后女孩bfs一次,注意实时判断当前格子是否已经被鬼占领,每次...原创 2019-10-05 00:43:49 · 303 阅读 · 0 评论 -
POJ - 2449 Remmarguts' Date(第k短路:spfa+A*)
题目链接:点击查看题目大意:给出一个有向图,求第k短路题目分析:偷学了一波A*,本来以为是多难的算法,其实就是bfs+优先队列的升级版,之前看的那些博客写的都太深奥了,以至于看了一半啥都没看懂然后就被吓跑了,这里放一波zx学长PPT上的描述,我感觉简洁精炼,几句话就把这个算法的核心描述清楚了:A * 算法的实现,A * =优先队列BFS+估价函数。 回顾优先队列bfs:优先队列BF...原创 2019-10-05 11:08:52 · 268 阅读 · 0 评论 -
HDU - 3533 Escape(预处理+A*)
题目链接:点击查看题目大意:题意我感觉描述的很不清楚。。是看网上其他大佬的博客总结来的,大意就是我们要从点(0,0)走到点(n,m),然后在一些地方设置了炮塔(炮塔视为墙),可以向一个方向周期性地发射同一速率的炮弹,当炮弹到达某一方格的时间是整数时,说明当我们在这个时间到达这个方格时会被击中,然后我们的行驶路线有五个方向,分别是上下左右和不动,并且可以走之前走过的路,问在上述条件下,我们到达目...原创 2019-10-07 13:24:23 · 262 阅读 · 0 评论 -
HDU - 5876 Sparse Graph(bfs+set)
题目链接:点击查看题目大意:给定一个无向图G,规定H为G的补图,求在H上关于点s的单源最短路题目分析:因为H是G的补图,所以可以用整个图减去G得到H,然后对H跑一边迪杰斯特拉,可是整个图最多能达到4e10,存都存不开,就别说别的了。正难则反,我们可以考虑用bfs正向去求,遍历到任意一个点时,我们可以枚举在G图中出现的边,并用总边删除(这里的总边指的是当前顶点和其余n-1个点的n-1条边),...原创 2019-08-29 20:34:31 · 207 阅读 · 0 评论