![](https://img-blog.csdnimg.cn/20190918140053667.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
搜索
算法
黑谷小健
一定要开心鸭
展开
-
2018年全国多校算法寒假训练营练习比赛(第四场) A 石油采集 【二分匹配+DFS】
题意: 随着海上运输石油泄漏的问题,一个新的有利可图的行业正在诞生,那就是撇油行业。如今,在墨西哥湾漂浮的大量石油,吸引了许多商人的目光。这些商人们有一种特殊的飞机,可以一瓢略过整个海面20米乘10米这么大的长方形。(上下相邻或者左右相邻的格子,不能斜着来)当然,这要求一瓢撇过去的全部是油,如果一瓢里面有油有水的话,那就毫无意义了,资源完全无法利用。现在,商人想要知道,在这片区域中,他可以最多得到多少瓢油。 地图是一个N×N的网络,每个格子表示10m×10m的正方形区域,每个区域都被标示上了是油还是水。原创 2022-03-23 21:58:32 · 480 阅读 · 0 评论 -
题解报告:P1434 [SHOI2002]滑雪
链接: zzz 题意: 思路: dfs+记忆化 原本应该每个点都去搜,但是会超时,所以用记忆化搜索把答案存储在数组里,保证复杂度不会太高。 自己的问题,没有想过用返回值来存答案,dfs里的每一步都挺妙的。 #include<bits/stdc++.h> using namespace std; const int maxn=105; int a[maxn][maxn]; int ans[maxn][maxn]; int x1[5]={ 0,1,-1,0,0}; int y11[5]={0,0原创 2021-05-24 16:50:39 · 136 阅读 · 0 评论 -
题解报告:P1141 01迷宫(BFS好题+并查集)
机票 题意: 思路: 首先发现其实就是求连通块,如果是bfs做,明确每次去搜索会t,那么就要存个每个连通块的答案然后再输出,又要想好如果都不连通的情况得开1e6的数组,细节超多的一勾八题。 #include<bits/stdc++.> using namespace std; const int maxn=1005; queue<pair<int ,int >>mo; int n; int a[maxn][maxn]; int ans[maxn][maxn]; int a原创 2021-05-18 21:36:17 · 143 阅读 · 0 评论 -
P1135 奇怪的电梯(BFS+待补)
飞机票 题意: 思路:超级经典的一道题,有多种解法 BFS 开个标记数组,用队列,然后就判断找下去,找到就跳出,就能保证用的次数最少,没找到则是-1。 #include<bits/stdc++.h> using namespace std; queue<pair<int ,int >>mo; const int maxn=20005; int a[maxn]; int ans[maxn]; int sf[maxn]; int n; bool jg(int d){原创 2021-05-17 22:03:43 · 205 阅读 · 0 评论 -
题解报告:P1443 马的遍历(BFS)
链接zz 题意: 思路: 对于这题的bfs简单来说就是把从当前位置能经过的所有点逐个入队,然后对八个方向的走法进行能不能走的判断,判断完当前位置就pop,并且刷新它的答案,当然这题也能用dfs。 然后用到的方法有队列里套pair,其实开个结构体存x和y的值也行,然后就是格式的输出%5d就是宽度为5,%-5d就是向左对齐啦. #include<bits/stdc++.> using namespace std; const int maxn=405; queue<pair<int ,原创 2021-05-17 19:59:09 · 139 阅读 · 0 评论 -
题解报告:P1605 迷宫(dfs+回溯)
地址 题意: 思路:dfs搜索路径,经过后就标机保证不回头,走不了的时候回到上层得取消此时的标机完成回溯。 #include<bits/stdc++.h> using namespace std; const int maxn=7; int a[maxn][maxn]; bool flag[maxn][maxn]; int x1[6]={ 0,-1,1,0,0}; int y11[6]={0,0,0,1,-1}; int n,m,t,sx,sy,fx,fy; int ans; bool jg(原创 2021-05-14 16:54:55 · 128 阅读 · 0 评论 -
题解报告:P1506 拯救oibh总部+P1162 填涂颜色(染色法dfs)
飞机票 这道题是一道挺基础的染色题 思路:搜索最外层,如果有空洪水就可以沿着空一直往里走,所以要dfs搜索一下。 #include<bits/stdc++.> using namespace std; const int maxn=505; int a[maxn][maxn]; int kx[5]={0,1,-1,0,0}; int ky[5]={0,0,0,1,-1}; int x,y; bool jg(int i,int j){ if(i>=1&&i<=x原创 2021-05-12 20:54:31 · 137 阅读 · 0 评论 -
题解报告:P1101 单词方阵(dfs+方向搜索)
飞机票 题意: 思路:搜索从y开始的八个方向看看能不能搜到yizhong搜到了就标机,然后输出标机的字符即可 #include<bits/stdc++.> using namespace std; const int maxn=105; int n; char c1[maxn][maxn]; char ans[8]={'y','i','z','h','o','n','g'}; int x1[9]={0,1,0,1,-1,0,-1,1,-1}; int y11[9]={0,0,1,1,0,-1,-原创 2021-05-13 18:54:54 · 143 阅读 · 0 评论 -
题解报告:POJ 2386--Lake Counting(BFS+DFS)
传送门 Description Due to recent rains, water has pooled in various places in Farmer John’s field, which is represented by a rectangle of N x M (1 <= N <= 100; 1 <= M <= 100) squares. Each square contains either water (‘W’) or dry land (’.’). Farm原创 2021-04-05 16:47:22 · 150 阅读 · 0 评论