dfs bfs

DFS 序

最近接触到一些 DFS 序的题,它可以用来解决一些关于子树的问题。 DFS 序本质就是一棵树在深度优先搜索时访问节点的顺序。比如有下面一棵树,其 DFS 序就是 $1 \; 2 \; 4 \; 7 \; 8 \; 5 \; 3 \; 6 \; 9$。 DFS 序有一个很重要的性质,以节点 $u$ 为 ......
DFS

深度优先搜索(DFS)

深度优先搜索(DFS) 我们以二叉树的遍历为例子。 先序遍历 遍历过程 访问根节点 先序遍历其左子树 先序遍历其右子树 中序序遍历 遍历过程 中序遍历其左子树 访问根节点 中序遍历其右子树 后序遍历 遍历过程 后序遍历其左子树 后序遍历其右子树 访问根节点 我们使用数组来模拟二叉数,使用代码实现如下 ......
深度 DFS

01bfs

今天写一个最短路题边权为 \(0\) 或 \(1\),我说这不一眼 \(dij\) 么?结果题解区全部写的 \(O(n+m)\) 的 \(01bfs\) 。 好家伙我居然一直不知道这么个东西,花了一个小时看会了,写一下原理。 实现的方法很简单,就是一个双端队列,去 \(nm\) 的 \(deque\ ......
bfs 01

dfs回溯算法,拨号

题目 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits = "23" 输出:["ad","ae","af","bd","be"," ......
算法 dfs

bfs入门p1443一点心得

这题思路很简单,也是bfs通常的思路。即在每一轮枚举所有可能出现的情况,将其入队,然后弹出队首。当队列为空时结束搜索。 有以下几点体会: 1.入队的条件尽量多。不然容易死循环,一开始没有加上bfs[a.x][a.y] 1这个条件,导致已经被搜索到的点重复入队陷入死循环; 2.第一次走到的点标记为1, ......
点心 p1443 1443 bfs

DFS和BFS

DFS : acwing 842 递归搜索树 1 #include<iostream> 2 using namespace std; 3 4 const int N = 10; 5 int n; 6 int path[N]; 7 bool st[N]; 8 9 void dfs(int u) 10 ......
DFS BFS

CF1316D Nash Matrix(构造/dfs)

题目 第一次做构造题,做了两节晚自习 qwq 一开始我完全是正着想,首先 \(X\) 是显然的,但其他的点就不好做了, 然后我就想,可行的一般结论推不出,那就想反例,然后我想啊想......倒是想到了几个,比如说环与环之间不能有相交,环内外的点不能互相到达,跟本举不完,而且也不好实现,还是要想一般结 ......
Matrix 1316D 1316 Nash dfs

BFS

鸣人与佐助 佐助被大蛇丸诱骗走了,鸣人在多少时间内能追上他呢? 已知一张地图(以二维矩阵的形式表示)以及佐助和鸣人的位置。地图上的每个位置都可以走到,只不过有些位置上有大蛇丸的手下,需要先打败大蛇丸的手下才能到这些位置。 鸣人有一定数量的查克拉,每一个单位的查克拉可以打败一个大蛇丸的手下。假设鸣人可 ......
BFS

DFS

Oil Deposits 这道题的原题链接Online Judge 自行翻译 == == The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvCom ......
DFS

DFS

Oil Deposits 这道题的原题链接Online Judge 自行翻译 == == The GeoSurvComp geologic survey company is responsible for detecting underground oil deposits. GeoSurvCom ......
DFS

DFS、BFS模板

目录DFSBFS DFS 处理当前节点的位置不同对应着不同的遍历 def preorderTraversal(root): if not root: return print(root.val) #前序遍历,处理当前节点 preorderTraversal(root.left) # 递归遍历左子树 ......
模板 DFS BFS

迭代加深,双向搜索,IDA*,A*,双端队列BFS

迭代加深: //迭代加深搜索 //给搜索设定一个范围,如果在这个范围内没有答案那么再加大搜索范围 //这么做是为了防止搜索过深,导致利用大量时间搜索无用信息 //如果当前搜索是第10位,搜索的是个二叉树,那么前9个就是2^0+2^1+2^2+..+2^9=2^10-1,所以时间复杂度并没增大太多 / ......
队列 双向 IDA BFS

力扣1026. 节点与其祖先之间的最大差值(DFS)

给定二叉树的根节点 root,找出存在于 不同 节点 A 和 B 之间的最大值 V,其中 V = |A.val - B.val|,且 A 是 B 的祖先。 (如果 A 的任何子节点之一为 B,或者 A 的任何子节点是 B 的祖先,那么我们认为 A 是 B 的祖先) 示例 1: 输入:root = [ ......
差值 节点 祖先 之间 1026

字符串、线性表、队列、栈、哈希表、dfs、bfs

题目列表: 1. 字符串 无重复字符的最长子串 (中等难度) 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 AC代码,展开查看 class Solution { public: int lengthOfLongestSubstring(string s) { int res ......
队列 字符串 线性 字符 dfs

第 369 场周赛(简单位运算,分类讨论,dfs,树形dp)

简单位运算模拟 class Solution { public: int findKOr(vector<int>& nums, int k) { vector<int> bit(32, 0); for(int i = 0; i < 31; i ++ ) { int cnt = 0; for(auto ......
树形 369 dfs dp

数据结构与算法 | 深搜(DFS)与广搜(BFS)

在查找二叉树某个节点时,如果把二叉树所有节点理理解为解空间,待找到那个节点理解为满足特定条件的解,对此解答可以抽象描述为: _在解空间中搜索满足特定条件的解_,这其实就是搜索算法(Search)的一种描述。当然也有其他描述,比如是“指一类用于在数据集合中查找特定项或解决问题的算法”,又或者是“指通过... ......
数据结构 算法 结构 数据 DFS

P9669 [ICPC2022 Jinan R] DFS Order 2

Description P 有一棵树,根节点是 \(1\),总共有 \(n\) 个节点,从 \(1\) 到 \(n\) 编号。 他想从根节点开始进行深度优先搜索。他想知道对于每个节点 \(v\),在深度优先搜索中,它出现在第 \(j\) 个位置的方式有多少种。深度优先搜索的顺序是在搜索过程中访问节点 ......
P9669 Jinan Order 9669 2022

Codeforces Round 875 (Div. 2) C. Copil Copac Draws Trees( DFS )

Codeforces Round 875 (Div. 2) C. Copil Copac Draws Trees 思路: 在输入树的边的同时记录他们的输入顺序 从 1 开始跑 DFS ,遇到未连上的边时 , 有两种情况(用 q 表示当前点的顺序序号) 1.边的顺序在这个点连上之前,那么 DFS 的 ......
Codeforces Round Copil Copac Draws

DFS 剪枝

DFS 剪枝 \(DFS\) 是一种常见的算法,大部分情况下,很少会爆搜为正解的题目。因为 \(DFS\) 的时间复杂度特别高。 我们可以先写一段 dfs 的伪代码 int ans = 最坏情况, now; // now 为当前答案 void dfs(传入数值) { if (到达目的地) { ans ......
DFS

【DFS】129. 求根节点到叶子结点的和

链接 https://leetcode.cn/problems/sum-root-to-leaf-numbers/description/ 思路 时刻记住,DFS是递归的一种。而解决递归,最朴素的思路就是:递归的定义就是递归的解。 题目要求我们求根节点到叶子结点的和,我们要提供一个值保持其状态,退出 ......
结点 节点 叶子 DFS 129

【经典题目】【循环DFS】生成数组的全排列

问题描述 给你一个数组,生成这个数组中元素的全排列。 思路 经典的循环dfs。要点是我们需要设置visited数组来指代其是否被遍历过。 代码 class Solution: def islandPerimeter(self, grid): if not grid: return [] visite ......
数组 题目 经典 DFS

算法修养--广度优先搜索BFS

广度优先算法(BFS) 广度优先算法(Breadth-First Search)是在图和树领域的搜索方法,其核心思想是从一个起始点开始,访问其所有的临近节点,然后再按照相同的方式访问这些临近节点的节点,这种访问方式类似涟漪泛起,一层一层的扩散。 广度优先算法解决的问题: 从A点出发,有没有一条路径可 ......
广度 算法 修养 BFS

DFS

题目:https://www.luogu.com.cn/problem/P1216 //还需理解 #include <iostream> #include <algorithm> #include <cstring> using namespace std; int r; int num[1005] ......
DFS

P9233 [蓝桥杯 2023 省 A] 颜色平衡树 (dfs序 莫队)

P9233 [蓝桥杯 2023 省 A] 颜色平衡树 (dfs序 莫队) 莫队原理:https://zhuanlan.zhihu.com/p/115243708 对于树上的每个结点,按照 dfs 序打上时间戳,这样就可以把每一个结点对应的子树的答案转化为一个区间的答案。将子树询问离线下来变成 \(n ......
蓝桥 颜色 P9233 9233 2023

0-1 bfs

问题引入 对于边权为 0/1 的图 \(G=(V,E)\),求解其最短路。(注意这里的 1 并不一定就是 1,只是反映有无权值) ps. 一下称该类图为 0-1 图。 求解 一般图一般有 Dijkstra 和 SPFA。 但对于 0-1 图这样特殊的图,\(O(m\log m)\) 的 Dijkst ......
bfs

【LeetCode递归】括号生成,使用dfs

括号匹配 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入:n = 3 输出:["((()))","(()())","(())()","()(())","()()()"] 示例 2: 输入:n = 1 输出:["()"] 提示: 1 < ......
括号 LeetCode dfs

[USACO08FEB]meteor Shower S题解(bfs)

题目描述 贝茜听说一场特别的流星雨即将到来:这些流星会撞向地球,并摧毁它们所撞击的任何东西。她为自己的安全感到焦虑,发誓要找到一个安全的地方(一个永远不会被流星摧毁的地方)。 如果将牧场放入一个直角坐标系中,贝茜现在的位置是原点,并且,贝茜不能踏上一块被流星砸过的土地。 根据预报,一共有 \(M\) ......
题解 Shower meteor USACO FEB

JAVA图搜索算法之DFS-BFS

图算法DFS与BFS BFS和DFS代表对图进行遍历,即搜索的算法,搜索算法中常用的只要有两种算法:深度优先遍历(Depth-First-Search : DFS)和广度优先遍历(Breadth-First-Search : BFS)。一个图结构可以用来表示大量现实生活中的问题,比如,道路网络,计算 ......
算法 DFS-BFS JAVA DFS BFS

DFS 与 BFS

简介 状态:解决问题所关注的属性的集合。 转移:状态之间的变化过程。 搜索:处理状态转移、寻找新状态、枚举(遍历)所有状态的一种算法思想。 搜索树:状态和有效转移形成的树形结构,每个状态只会被扩展一次。 深度优先搜索 全称为 Depth-First Search,简称 DFS、深搜。 这个算法一般采 ......
DFS BFS

dfs 与 bfs

$$dfs$$ 深度优先搜索,全称 Depth First Search,通常有两种意义:递归暴力枚举每种情况、图论中用于遍历或搜索图的算法。 搜索:递归暴力枚举每种情况 OI-wiki Link 没有什么好说的,经常用于打暴力,像 xhr 神仙就可以用它打出 HN 2023 小学组 S 1=。 洛 ......
dfs bfs