bfs
河渔船
成长的小垃圾
展开
-
P1162 填涂颜色
题见洛谷#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<cmath>#include<vector>using namespace std;int a[40][40],n;bool f[40][40];int dx[]={0,1,-1,0,原创 2017-02-06 17:13:25 · 239 阅读 · 0 评论 -
LYK快跑!(run)
Time Limit:5000ms Memory Limit:64MB题目描述 LYK陷进了一个迷宫!这个迷宫是网格图形状的。LYK一开始在(1,1)位置,出口在(n,m)。而且这个迷宫里有很多怪兽,若第a行第b列有一个怪兽,且此时LYK处于第c行d列,此时这个怪兽对它的威胁程度为|a-c|+|b-d|。 LYK想找到一条路径,使得它能从(1,1)到达(n,m),且在途中对它威胁程度最小的怪原创 2017-10-07 16:47:46 · 319 阅读 · 0 评论 -
P3818 小A和uim之大逃离 II
luogu 传送门bfs拓展嘛。 不过这里有一点特别之处,就是记录状态时要三维,f[i][j][0/1],代表到了(i , j)这个点是否使用过向量。 在bfs中往四面走,如果没有使用过向量,就再拓展一下使用向量的。(还是比较容易啦)#include<cstdio>#include<iostream>#include<cmath>#include<cstring>#include<alg原创 2017-08-15 14:21:25 · 346 阅读 · 0 评论 -
P1979 [NOIP]华容道(70分的暴力)
https://www.luogu.org/problem/show?pid=1979 用裸的bfs写到了70分。 记录状态可以记录当前指定棋子的位置和空白格子的位置,还有一个步数(用结构体最好啦)。 直到指定棋子的位置到了目标格子时,就可以停止了。要注意空白格子可能与指定棋子换位置。70分的暴力代码#include<iostream>#include<cstring>#include<s原创 2017-07-27 09:23:20 · 826 阅读 · 0 评论 -
P1979 [NOIP]华容道
luogu 传送门 搞了小半天,终于搞了出来。 以前写过一个暴力70分的做法(点这里)在70分的基础上: 注意到只有空格在指定棋子旁边才有意义,所以可以O(n^2)记录状态,记录空格在指定棋子的哪个方向。 因为询问数比较多,所以可以预处理出来【指定棋子不动,空格移动到另一边】和【棋子与空格交换位置】两种情况,以移动步数为边权,以状态为点建图。 代码中有解释#include<cstdio原创 2017-08-11 20:08:43 · 593 阅读 · 0 评论 -
堡垒(fortress)
大暴力搜索题。 建图时,我的建图方法是偶数行偶数列为房子,奇数行奇数列是实墙(其实这些点是不再存在的)。 其他先赋值为没有墙,在根据输入来添墙。 看图更直观一点 样例图: 这样用bfs染色,就能做出前两问。 后两问,枚举每一面墙,如果墙两侧的房间不在一个大房间里,就可以合并,这样不断枚举更新答案。 还有难点是构图。#include<iostream>#include<cstrin原创 2017-07-26 14:43:20 · 299 阅读 · 0 评论 -
P2658 汽车拉力比赛
luogu 传送门标准的二分答案。 check中,我们用bfs判断以当前的标准是否能拓展出所有的路标。 注:此题是m行n列。#include<iostream>#include<algorithm>#include<cstdio>#include<cmath> #include<queue>#include<vector>#include<cstring>using namespa原创 2017-08-10 16:50:42 · 512 阅读 · 0 评论 -
蝉(90分的暴力)
n个点的树,m次操作 给出一棵树,维护下列操作: 1.在x位置放上一只蝉。(如果已经有蝉,忽略此操作) 2.查询x位置的坏掉指数(坏掉指数是指距x位置最近的蝉的距离) 一开始时在1的位置有一只蝉。 10% N,M ≤ 10 40% N,M ≤ 100 100% N ≤ 2 × 10^5 ,M ≤ 10^5那我们用暴力来做好了,每次放入蝉时,更新一下每个蝉的坏掉指数,用bfs或者原创 2017-07-25 11:11:13 · 224 阅读 · 0 评论 -
P1379 八数码难题
luogu 传送门bfs,像输入一样我们用一个数来表示状态,因为不能开一个9位的数组,又因为如果数的八位确定,那么最后一位就能确定,所以我们可以开一个8位的数组来记录这个状态是否进过队。重点是将0与其它位转换,基于九宫格的特点,我们只能将0与和它相距 1 -1 3 -3 位的数字交换,下面是数位交换的原则: 1. 要得到第x位前面的部分:/10^x 2. 要得到第x位后面的部分:%10^(x-原创 2017-08-08 20:05:16 · 895 阅读 · 0 评论 -
Codevs 2594 解药还是毒药
Codevs 传送门我们可以用二进制数来表示状态(状态压缩),1代表患病,0代表不患病。 把每一种药对人的影响分别用两个数记录下来: 对于治病,我们用0代表治病,1代表无影响,我们与当前状态做一下 and运算,就把病治好啦。 对于患病,我们用1代表患病,0代表无影响,我们与当前状态做一下或 | 运算,就把病患上啦。用bfs不断拓展,直到人的状态为一串0就可以啦。#include<iostre原创 2017-08-08 17:00:10 · 409 阅读 · 0 评论 -
Fox Dividing Cheese [CF-371B]
http://codeforces.com/contest/371/problem/B 暴力一点的写法:bfs搜索(可以过,但是有更优的做法),共六种拓展方向,优化一点是:吃大的。 代码:#include<iostream>#include<cstdio>#include<cstring> #include<cmath>#include<queue>#define LL long lo原创 2017-06-18 09:03:30 · 341 阅读 · 0 评论 -
P1541 乌龟棋
题见洛谷记忆化搜索#include<iostream>#include<cstdio>#include<cstring>#include<string> #include<algorithm>using namespace std;int num[5],a0[400];int dp[40][40][40][40],ans=0;int n,m;int dfs(int x,int a,原创 2017-02-08 09:44:03 · 347 阅读 · 0 评论 -
P2685抓牛(bfs)
题见洛谷#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<cmath>#include<vector>#define LL long long#define p 0.00000001using namespace std;int n,k;i原创 2017-02-06 11:43:23 · 406 阅读 · 0 评论 -
P1141 01迷宫
题见洛谷#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<cmath>#include<vector>bool f[1005][1005];char a[1005][1005];int dx[]={0,0,0,1,-1};int dy[]={0原创 2017-02-06 17:08:06 · 318 阅读 · 0 评论 -
NOIP 2014 寻找道路
评测传送先反向跑一边bfs,然后将到达不了的点以及它的邻接点删掉。(注意只删一层) 然后再正向跑一遍bfs就可以了。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<ctime>#include<queue>using namespace std;const int N=100原创 2017-10-18 17:06:26 · 326 阅读 · 0 评论