![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
bfs
广度优先搜索
为什么他们cf写的这么快
这个作者很懒,什么都没留下…
展开
-
POJ - 3126 (bfs+最短路)
题目链接hh学长酷爱素数,他经常自娱自乐,随机挑选两个四位的素数a,b。游戏规则是:a可以通过改变某一位上的数字使其变成c,但只有当c也是四位的素数时才能进行这种改变。hh学长可以很轻松的算出a最少经过多少次变化使其变为b,所以他相信你也可以。例如:1033 -> 81791033173337333739377987798179最少变换了6次。Input第一行输入整数T,表示样例数。 (T <= 100)每个样例输入两个四位的素数a,b。(没有前导零)Output原创 2020-05-20 22:23:37 · 202 阅读 · 0 评论 -
牛客每日一题 maze(bfs+最短路)
题目链接题目描述小明来到一个由n x m个格子组成的迷宫,有些格子是陷阱,用’#‘表示,小明进入陷阱就会死亡,’.'表示没有陷阱。小明所在的位置用’S’表示,目的地用’T’表示。小明只能向上下左右相邻的格子移动,每移动一次花费1秒。有q个单向传送阵,每个传送阵各有一个入口和一个出口,入口和出口都在迷宫的格子里,当走到或被传送到一个有传送阵入口的格子时,小明可以选择是否开启传送阵。如果开启传送阵,小明就会被传送到出口对应的格子里,这个过程会花费3秒;如果不开启传送阵,将不会发生任何事情,小明可以继续向原创 2020-05-14 22:05:58 · 270 阅读 · 0 评论 -
Codeforces Round #641 (Div. 2) E. Orac and Game of Life(bfs+思维)
题目链接题意:给定一个黑白网格,每一轮会对这个黑白网格进行变换,规则是如果一个单元格中只要有一个单元格和它有相同的颜色,那么它就变色,给出x,y,p,问第p轮的时候(x,y)的颜色。思路:首先感谢这场比赛,成功上紫。其实这个也挺水的,不知道为什么没人做。首先可以模拟一下,如果一旦一个格子变色的话,最终会慢慢殃及其他所有的格子变色(就是时间早晚的问题),如果一旦一个格子变了色,那么在剩下的轮变换中呈现周期性变换,也就是从它变色的那一刻起(如果是奇数轮了就是变色,偶数轮又变回来了)。于是现在的重点就原创 2020-05-13 22:10:45 · 163 阅读 · 0 评论 -
Codeforces Round #639 (Div. 2) D. Monopole Magnets(bfs+模拟)(恶心的阅读理解题)
题目链接ps:说实话这场cf质量真不咋地,最讨厌的就是出成阅读理解题,打比赛是为了让选手的算法能力得到提升,不知道出成阅读理解题是几个意思,毫无意义,C和D都看了半天才看懂。题意:给你一个网格,网格中的 每个格子为黑色或者白色,你要放置一些S磁铁,N磁铁。N磁铁会走向同一行或者同一列的S磁铁,然后N磁铁只能经过黑色的格子,不能经过白色的格子。然后求对于所有的操作,就是一个N磁铁会被无限个若...原创 2020-05-07 21:47:46 · 212 阅读 · 0 评论 -
牛客小白月赛24C 十面埋伏(bfs+模拟)
题目链接思路:说实话一开始没怎么读懂题意,但乱搞也就过了。。。先把士兵当成墙,bfs求一下可以遍历到的点,接着再看看这些点的上下左右是否有士兵,有的话就变成*。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn = 505 ;const int dir[4][2]=...原创 2020-04-19 11:11:32 · 131 阅读 · 0 评论 -
Codeforces Round #149 (Div. 2) C. King's Path(bfs)
题目链接题意:给定一个很大的网格,再给出最多1e5个可以走的坐标,每次可以向8个方向移动,问能不能从起点到终点。思路:一开始没看清题,题目里说可以走的范围不会超过1e5,那么果断set暴力存嘛,剩下的就是bfs的过程。#include<bits/stdc++.h>using namespace std;typedef long long ll;int stepx[10...原创 2020-03-18 21:59:41 · 89 阅读 · 0 评论 -
Codeforces Round #267 (Div. 2) D. Fedor and Essay (bfs+dp+思维)
题目链接思路:用v来存每个字符串的r的个数和字符串长度,bfs来更新v数组(此时的v【i】表示字符串i能够被替换的最少的r和len),类似于dp过程。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn =2e5+5; int n,m,k=0,w[maxn];cha...原创 2020-03-18 22:04:16 · 123 阅读 · 0 评论 -
Codeforces Round #533 (Div. 2) D. Kilani and the Game(bfs+模拟)
题目链接题意:一开始理解错了,还以为只能向一个方向伸展,其实上下左右都可以,那么我们就用bfs宽搜,模拟即可。每次记得记录一下每个pi可以拓展的个数。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int dir[4][2]={-1,0,1,0,0,-1,0,1};const i...原创 2020-03-05 20:50:55 · 105 阅读 · 0 评论 -
Codeforces Round #442 (Div. 2) D. Olya and Energy Drinks(BFS+剪枝)好题
题目链接题意:要你判断从起点到终点的最小步数,每次可以从上下左右四个方向沿着同一方向最多走k部。思路:标准的bfs走迷宫问题,可以略有不同的是每次可以沿同一方向最多走k步,直接bfs的话会tle,考虑一下剪枝,那怎么剪呢?我们可以设一个d数组表示从起点到终点的最小步数,设当前点为(x,y)可以沿着右方向(x,y+1),(x,y+2).。。。(x,y+k),假设我们求出d【x】【y】+1&g...原创 2020-03-08 14:19:11 · 128 阅读 · 0 评论 -
VK Cup 2017 - Qualification 1 C. Cycle In Maze(bfs+最短路+贪心+思维)
题目链接题意:给定n*m的网格图,给你起点x,问存不存路径满足从X出发最后回到X刚好K步,如果存在输出字典序最小的路径。思路:字典序最小只要规定一下方向很容易贪心构造,麻烦的是怎么让他又回到起点呢?这里学到了大佬们的方法,可以一开始先求起点到其他点的最短路,假设当前还剩x步才满K,点(i,j)到起点的距离小于等于X的话就可以走,否则不行,就是卡距离,逼他回到起点。#include <...原创 2020-03-10 21:49:45 · 243 阅读 · 0 评论 -
Codeforces Round #325 (Div. 1) B. Phillip and Trains(bfs)
题目链接思路:一开始疯狂在想火车的移动要怎么实现,看了大佬的代码才发现火车的移动可以看成自己向右移动两格(感觉自己想死也想不到啊QAQ)。#include<bits/stdc++.h>using namespace std;const int maxn=1e3+1;int T,n,k,vis[maxn][maxn];char s[maxn][maxn];bool ch...原创 2020-03-11 21:21:17 · 89 阅读 · 0 评论 -
Codeforces Round #408 (Div. 2) D. Police Stations(多起点bfs)
题目链接思路:要想知道那条路是多余的,我们可以把所有的警察局的点进行bfs,如果该那条边没有被访问过的,就说明它是多余的。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int maxn=3e5+1;int n,m,d,t,vis[maxn],ans[maxn],sum;vec...原创 2020-03-03 20:20:37 · 108 阅读 · 0 评论 -
Codeforces Round #611 (Div. 3) D. Christmas Trees(贪心+bfs)
题目链接题意:给出n个点,记为数组a,然后要你构造出m个点,记为数组b,要求这m+n个元素互不相同,同时对于b数组的每个元素,满足每个点到最近的a数组里的某个元素距离最近,求最近的距离的和,同时构造出b数组。思路:很显然,根据贪心思想,我们的b数组最好的就是在每个a元素的两端,比如a数组是1 3 6,那么构造b数组的时候就考虑,1的两端0,-1,3的两端2,4,6的两端5,7,以此类推,这...原创 2020-02-11 22:12:12 · 203 阅读 · 0 评论