dfs,欧拉序
原创
2018-11-27 20:29:43
956阅读
链接:https://ac.nowcoder.com/acm/contest/368/B来源:牛客网题目描述有一棵n个节点的二叉树,1为根节点,每个节点有一个值wi。现在要选出尽量多的点。对于任意一棵子树,都要满足:如果选了根节点的话,在这棵子树内选的其他的点都要比根节点的值大;如果在左子树选了一个点,在右子树中选的其他点要比它小。输入描述:第一行一个整...
转载
2021-09-06 15:16:15
86阅读
浅谈DFS序 本篇随笔简要讲解一下信息学奥林匹克竞赛中有关树的DFS序的相关内容。 DFS序的概念 先来上张图: 树的DFS序列,也就是树的深搜序,它的概念是:树的每一个节点在深度优先遍历中进出栈的时间序列。 树的DFS序,简单来讲就是对树从根开始进行深搜,按搜到的时间顺序把所有节点排队。 就比如上
转载
2019-10-29 12:43:00
75阅读
2评论
给一棵有根树,这棵树由编号为1..N的N个结点组成。根结点的编号为R。每个结点都有一个权值,结点i的权值为vi 。接下来有M组操作,操作分为两类:1 a x,表示将结点a的权值增加x;2 a,表示求结点a的子树上所有结点的权值之和。输入格式第一行有三个整数N,M和R。第二行有N个整数,第i个整数表示
转载
2019-11-04 21:38:00
99阅读
2评论
这张图的dfs序显然为A-B-D-E-G-C-F-H
【重要性质】
dfs序可以把一棵树区间化,即可以求出每个节点的管辖区间。
对于一棵树的dfs序而言,同一棵子树所对应的一定是dfs序中连续的一段。
这个性质非常重要,在利用dfs序来解题的过程中,这个不可缺少!
证明: 在dfs遍历时,当进入一个节点之...
原创
2023-02-07 12:11:57
145阅读
链接:://ac.nowcoder.com/acm/contest/368/B:牛客网题目描述有一棵n个节点的二叉树,1为根节点,每个节点有一个值wi。现在要选出尽量多的点。对于任意一棵子树,都要满足:如果选了根节点的话,在这棵
原创
2022-03-14 10:09:40
43阅读
Description:这是一道模板题。给一棵有根树,这棵树由编号为 1…N 的 N 个结
原创
2023-02-03 11:20:42
78阅读
dfs序题目练习
原创
2021-07-21 16:13:02
164阅读
豪哥生活在一个n个点的树形城市里面,每一天都要走来走去。虽然走的是比较的多,但是豪哥在这个想找话题的,他想知道以前有多少...
原创
2022-07-05 12:04:32
42阅读
#145. DFS 序 2dfsdfsdfs序转树状数组,然后实现树状数组的区间修改,区间查询,这里我们用差分实现即可。具体维护证明见之前的博客。传送门#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e6+5,M=2e4+5,inf=0x3f3f3f3f,mod=1e9+7;#define mst(a) memset(a,0,sizeof a)#define lx x<
原创
2021-08-10 09:57:59
89阅读
题目连接: https://leetcode-cn.com/problems/lexicographical-numbers/ 题目大意: 给定一个整数 n, 返回从 1 到 n 的字典顺序。 例如, 给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。 请尽
转载
2019-07-16 21:43:00
187阅读
2评论
#145. DFS 序 2dfsdfsdfs序转树状数组,然后实现树状数组的区间修改,区间查询,这里我们用差分实现即可。具体维护证明见之前的博客。传送门#incl
原创
2022-01-22 11:01:35
84阅读
#144. DFS 序 1好久没做dfsdfsdfs序了,复习一波。dfsdfsdfs序说白了就是对一棵树进行dfsdfsdfs时结点被遍历的顺序。dfsdfsdfs序的性质:对于一棵子树的遍历顺序一定是连续的。因此我们可以记录开始进入以uuu为根的子树的顺序in[u]in[u]in[u],和遍历uuu的最后一个叶子结点的顺序
原创
2022-01-22 11:01:44
39阅读
这题的思路很精妙,因为我们发现每个点有两种选择,一种是涂新的颜色,一种是涂原来出现的颜色 如果按树形dp的方法做,很难做,因为无法判断点之间的路径以及存在的颜色关系。因此想到使用dfs序的方式,转化成链式 这样该节点涂色之前父亲节点也被涂色。而新颜色可以随便选,原来的颜色必须和父亲节点的颜色一样 #
转载
2020-05-10 15:41:00
52阅读
2评论
#144. DFS 序 1好久没做dfsdfsdfs序了,复习一波。dfsdfsdfs序说白了就是对一棵树进行dfsdfsdfs时结点被遍历的顺序。dfsdfsdfs序的性质:对于一棵子树的遍历顺序一定是连续的。因此我们可以记录开始进入以uuu为根的子树的顺序in[u]in[u]in[u],和遍历uuu的最后一个叶子结点的顺序out[u]out[u]out[u]。这里我们就可以实现对一棵树进行区间操作了。这里的题目是单点更新,区间查询,显然dfsdfsdfs序转树状数组就是板子题。#includ
原创
2021-08-10 09:57:57
64阅读
概述线段树是一种数据结构, 其采用了分块思想, 可解决RMQ, RSQ(Range sum query)问题, 同时优秀的将复杂度保持在O(log n)级别相对比前缀和和ST表, 线段树支持修改1. 线段树所用的变量定义&说明在实现线段树时, 我一般习惯定义2个数组int t[MAX << 2], a[MAX << 2];其MAX请根据需求修改t用来存储这棵树, 采
传送门
注意一下这两句话
原创
2022-02-09 09:40:21
21阅读
描述给你一个图,一共有N个点,2*N-2条有向边。 边目录按两部分给出1、 开始的n-1条边描述了
原创
2022-07-05 10:34:20
66阅读
牛客——选点(dfs序+LIS)原题链接思路:根据题意,选出来的子树应该满足:左子树的点的权值>右子树的点的权值>根节点的权值。对
原创
2022-07-15 09:25:26
29阅读
好像dfs序做得不多啊。。然后肯定忘光了。。要捡回来。。记录完时间戳in和out之后区间[in,out]就可以代表整个子树了,然后单点修改可以用BIT。。#include#include#include#include#include#include#define inc(i,l,r) for(int i=l;i<=r;i++)#define dec(i,l,r) for
原创
2022-08-31 18:11:13
39阅读