搜索(深搜回溯与广搜) 1.深搜与回溯 深度优先搜索,简称为深搜或 "DFS" (Depth First Search), 是图运算的一种搜索方式,简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次.大致的搜索过程如下 深度优先遍历图的方法是, 从图中某顶点v出发: (1 ...
分类:
其他好文 时间:
2021-04-30 12:09:37
阅读次数:
0
原题链接 考察:搜索 思路: 预处理有子弹和城堡的坐标,这部分除了暴力没有更好的办法.因为还有一个时间限制,所以需要三维数组.剩下就是BFS. 剪枝: 1.相同时间的拜访点不必再访问. 2.当离终点的曼哈顿距离>能量 不必再走下去. 注意:城堡处一定要预处理再判断子弹. 1 #include <io ...
分类:
其他好文 时间:
2021-04-22 16:32:51
阅读次数:
0
最近做题养成了一个不太好的习惯,习惯性的先去看discuss有没有坑,越是惧怕错误越可能出错,之后的锻炼,出错再去check discuss吧 简单的BFS #include <iostream> #include <algorithm> #include <queue> #include <str ...
分类:
其他好文 时间:
2021-04-21 12:34:23
阅读次数:
0
给一个图,n个点,m个边。有向。一个人要从起点 S 开始走,要去 n 点。把有向图看成无向图自己选路走,最多走k次,可以不走。走完后,在停的那个点的地方,随机走一个有向边。如果没有出边,就不走。这个人要尽快的走到 n 这个点。问走的时间最长是多少? ...
分类:
其他好文 时间:
2021-04-15 12:48:11
阅读次数:
0
原题链接 考察:双端队列bfs 思路: 双端队列常用于距离只有0,1的情况.当距离为0时,更新的点放在队头.当距离为1时,更新的点放在队尾. 判断01距离不用写冗长的if代码.可以参照方向数组预设距离为0的斜杠应该有的方向. 这里当出队的距离才是确定了此点的最短距离. 1 #include <ios ...
题目链接 题解 ?:若图中边权全部为$1$,BFS即可在$O(n+m)$的时间中求出单源最短路。 BFS+剪枝就可以啦(☆▽☆) BFS:对于每个位置,向上下左右4个方向拓展长度$k$,直接搜索。 剪枝:在拓展过程中(当前拓展到位置$(x,y)\(),只要发现一个无法更新的位置\)(tx,ty)$( ...
分类:
其他好文 时间:
2021-04-12 11:40:06
阅读次数:
0
吐槽 最后的BFS和DFS了,做完这个开始搞模拟!!! DFS 注意检查的是新坐标!!! 1 #include<bits/stdc++.h> 2 using namespace std; 3 int sx,sy,ex,ey; 4 int maps[6][6]; 5 int dir[4][2]={ 6 ...
分类:
其他好文 时间:
2021-04-08 13:47:42
阅读次数:
0
#dfs的模板 注意bool判断是否走过这个点并注意回溯的处理。 注意条件判断和边界问题。 //边界判断即剪枝 if(chk()) return; if(over(BianJie)) return; if(bool = false)//未搜索过 bool = true; //赋值或纪录 dfs(n ...
分类:
编程语言 时间:
2021-04-07 11:21:16
阅读次数:
0
n为节点数量,m为边数量 EK算法复杂度:O(n*m^2) dinic算法复杂度:O(n^2*m) EK算法思想就是先用bfs找到一条增广路(从源点到汇点有流量的路),然后用pre数组记录这条路径上每一个节点的上一个节点。之后利用pre数组完成对这条路上所有边流量的消减,以及增加答案。看代码就清楚了 ...
分类:
编程语言 时间:
2021-03-29 12:24:11
阅读次数:
0
POJ百练 4116 拯救行动 【有序队列】 1.此题存在"慢路"(有守卫的位置)与"快路",遇到"慢路"需要消耗多倍时间/资源。故需要给类加一个是否"可直接判断"累减属性,对于"慢路",每次访问都减一,直到该属性转变为"可判断",此后与正常通路点一致; 2.关于python题解版本,参考hzw大佬 ...
分类:
编程语言 时间:
2021-03-29 11:57:13
阅读次数:
0