
BFS
BFS
*DDL_GzmBlog
再见锋芒,准备启程
展开
-
[AcWing] 双端队列广搜 175. 电路维修
目录[175. 电路维修](https://www.acwing.com/problem/content/177/)题意:问题转换思维:区别1为什么可以这样呢区别2code:175. 电路维修题意:就是给你一个电路板,里面的电线都是斜着的\ 或者 /你可以旋转这个让你连通左上角和右下角,问你旋转的最小步数(鳄鱼洗澡?)问题转换把能走通的两个端点之间看作边权为0否则看作边权为1思维:我们把所有点的横纵坐标加一下因为起点一直都是偶数点 偶数点只能到偶数点如果是偶数点那么是原创 2021-05-07 02:40:45 · 218 阅读 · 0 评论 -
[Acwing] 1106.山峰山谷
目录前言思路:y总的代码写崩的代码前言没写出来 ,我bfs的时候还在想 如果是山谷怎么b 如果是山峰怎么b , 分两种情况bfs ?思路:事实证明我想多了, 我们只需要判断 每一个连通块的状态即可,如果对于一个连通块 旁边既有比他低的又有比他高的那么我们直接不计算就行了y总的代码#include <cstring>#include <iostream>#include <algorithm>#define x first#define y secon原创 2021-06-11 20:59:14 · 204 阅读 · 0 评论 -
[Acwing] 最小步数模型 1107. 魔板
目录1107. 魔板题意:tips区别(和最短路的区别)存状态字典序的处理code(含注释):1107. 魔板题意:tips字典序不会为难你,只是出题人方便评测而已区别(和最短路的区别)这是状态到状态的最小步数,而不是某点到某点的 最下步数存状态一般用hash来存状态使用map 进行hash (map和under_map不差)(这题也可以用康托展开)字典序的处理证明难度异常Emm,结论如此简单我们处理的时候只需要先A再B然后C的顺序那么一定可以得到最小原创 2021-05-07 01:48:44 · 202 阅读 · 0 评论 -
*待改 [Acwing] 一维bfs 抓住那头牛
目录问题解决CODE[传送门]问题如何在一维数组求最小步数解决和二维处理一样但是我sef了CODE#include <bits/stdc++.h>using namespace std;const int N = 1e5+10;int dist[N];int st[N];int n,k;void bfs(int x){ memset(dist,0,sizeof dist); queue<int> q; q.push(x原创 2021-06-14 16:09:16 · 103 阅读 · 0 评论 -
[AcWing] 多源bfs 173. 矩阵距离 多源bfs
目录173.矩阵距离题意:思路:code:前置队列性质总结173.矩阵距离题意:求每个数(包括1)到最近的1的距离(曼哈顿距离 就是x+y)思路:我看完之后的想法:这好像就是正难则反,因为如果是你0入队的话你会判断许多没必要的数,如果1入队的话,那么每次都是有必要的了如果只有1个起点,直接跑bfs 建立虚拟源点(em),可以转换成一个最短路问题,不过我们做这题是不需要建立虚拟源点的把所有是1的位置初始化为0,然后把所有1加入到队列中code:#include <bi原创 2021-05-07 00:26:25 · 310 阅读 · 0 评论 -
[Acwing] 190. 字串变换 双向广搜
前言传送门 :顾名思义,不过是多了点东西罢了思路双向广搜 无非就是 终点和起点 一起搜索罢了(本质上还是 BFSBFSBFS)这题 起点是AAA 终点是BBB对于搜索 我们还需要记录两个量 :是否枚举过当前状态当前状态已经走了多少步我们可以使用 unordered_map<string, int> da, db来同时记录 步数 和 是否被遍历对于当前的BFSBFSBFS我们需要对于队头元素进行枚举,从每一个下标枚举所有的修改情况然后我们做普通的BFSBFSBF原创 2021-10-23 16:09:32 · 123 阅读 · 0 评论 -
[Acwing] 1097 池塘计数 搜索的计数问题
目录BFS:思路:code:DFS思路codeBFS:思路:对于每一个W 我们都进行广搜和打标记,同时标记能到的地方code:#include <bits/stdc++.h>using namespace std;const int N = 1e3+10;int dx[]= {0,0,1,-1,1,-1,1,-1};int dy[]= {1,-1,0,0,1,-1,-1,1};char g[N][N];int n,m,cnt,st[N][N] ;struct node{原创 2021-06-11 19:37:47 · 132 阅读 · 0 评论 -
[Acwing] bfs路径输出
目录CC#include <bits/stdc++.h>#define x first#define y secondusing namespace std;typedef pair<int,int> PII;const int N = 1500;int a[N][N],st[N][N],n;int dx[] = {0,0,-1,1};int dy[] = {-1,1,0,0};PII pre[N][N];int ans[N][2];struct node原创 2021-06-14 15:48:02 · 114 阅读 · 0 评论 -
*待改 [Acwing] 输出最小步数 马走日
目录问题:思路CODEY总CODE:问题:输出最小步数思路同样的 我们可以通过转移每次转移我们只需要对前面的一次操作加一即可我的代码有误 不清楚 不习惯用PiarCODE#include <bits/stdc++.h>using namespace std;const int N = 150;char g[N][N];int n,m,st[N][N];int ex ,ey;int dx[8] = {-2, -1, 1, 2, 2, 1, -1, -2};int原创 2021-06-14 15:51:17 · 142 阅读 · 0 评论