![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dfs序
dfs序
昵称很长很长真是太好了
这个作者很懒,什么都没留下…
展开
-
New Year Tree(dfs序+线段树+二进制)
题意: 给出一棵 n个节点的树,根节点为 1。每个节点上有一种颜色 ci。m次操作。操作有两种: 1 u c:将以 u为根的子树上的所有节点的颜色改为c。 2 u:询问以 u为根的子树上的所有节点的颜色数量。 题解: 一看题目好像是个dfs序+线段树的板子题,但是需要思考的是,怎么查询一段区间的颜色数目呢? 如果把这个问题解决了的话,这个题目也就相应的解决了。 看到颜色数目好像并不多,嗷,极好,60(2^60)正好在ll的范围内。 我们可以考虑每一位储存一种颜色,返回值为这段区间的**(或)|**。 这样子原创 2021-01-15 12:07:37 · 185 阅读 · 0 评论 -
[codeforces] 383C Propagating tree(dfs序+线段树)
题意: 给你一棵n个结点的树, 以1为根。每个结点有点权。有m次操作: 1.x结点权值 +val,x的儿子权值 −val,x的孙子们 +val,以此类推。 2.询问x的点权; 题解: 我们首先跑一边dfs序,顺便求除每个结点的深度。 我们把他分成两颗线段树,深度为奇数的在第一颗上,深度为偶数的在第二课上。 我们每次对两颗线段树同时操作。 第一颗线段树只进行+操作,第二棵线段树只-操作。 当我们询问某个点时,我们只需要判断一下这个点的奇偶,决定查询哪颗树即可。 /*Keep on going Never gi原创 2020-11-20 13:53:16 · 174 阅读 · 0 评论 -
求和(dfs序+线段树)
题意: 已知有n个节点,有n−1条边,形成一个树的结构。 给定一个根节点k,每个节点都有一个权值,节点i的权值为vi。 给m个操作,操作有两种类型: 1 a x :表示将节点a的权值加上x 2 a :表示求a节点的子树上所有节点的和(包括a节点本身) 题解: dfs序+线段树 用dfs序确定in[x]和out[x]的位置,in是当前结点开始的时间戳,out是回溯到当前结点的时间戳,当查询某结点时,可以快速确定他子树的范围。 代码: /*Keep on going Never give up*/ //#pr原创 2020-11-19 21:50:12 · 223 阅读 · 0 评论 -
CF570D Tree Requests
题意: 给定一个以1为根的n个节点的树,每个点上有一个字母(a-z),每个点的深度定义为该节点到1号节点路径上的点数.每次询问 a,b 查询以a为根的子树内深度为b的节点上的字母重新排列之后是否能构成回文串. 题解: dfs序+状态压缩+二分查找 这个题用到了很多小技巧,比如说异或前缀和等等。 我们首先对他跑一边dfs序,记录下每个点的时间戳。 把每个层点入度的时间戳放在一起,因为结点到某层,也要保证这一层是他的孩子。 所以我们用这个时间戳来确定到底是这一层的哪一段。 用二分查找分别找入度结点和出度结点,从原创 2020-11-18 21:18:31 · 120 阅读 · 0 评论 -
选点(dfs序+LIS)
题意: 有一棵n个节点的二叉树,1为根节点,每个节点有一个值wi。现在要选出尽量多的点。 对于任意一棵子树,都要满足: 如果选了根节点的话,在这棵子树内选的其他的点都要比根节点的值大; 如果在左子树选了一个点,在右子树中选的其他点要比它小。 题解: 要满足 根节点的值最小,左子树的值大于右子树的值。 这样的话我们可以先按照根->右->左的顺序来求出一个dfs序 然后求一下LIS即可。 /*Keep on going Never give up*/ //#pragma GCC optimize(3原创 2020-11-17 18:13:42 · 207 阅读 · 0 评论 -
CF1006E Military Problem
题意:给你一棵树,有q次查询,每次查询第n个结点的他的子树按照dfs序第x个元素是什么? 题解:一道dfs序的裸的题目。 首先需要一个数组存放第i个结点在dfs序中的位置 再需要一个数组来存放dfs序的顺序 在需要一个数组来存放一个结点子树的大小。(用来判断是否需要输出-1) 每次查询首先判断他的子树大小是否符合要求 如果符合要求再找到这个结点在dfs序中的位置。 然后利用存放dfs序顺序的数组瞬移 k-1 位,输出此元素即可。 利用这三个数组,即可再O(n)的时间复杂度下解决问题。 /*Keep on原创 2020-11-17 16:51:20 · 126 阅读 · 0 评论