link #思路: 经典套路,通过dfs序将树上修改转化为线性修改,这样问题就转化为了单点修改,区间查询,用树状数组维护。 类似题 #代码: #pragma GCC optimize(2) #include<bits/stdc++.h> using namespace std; typedef lo ...
分类:
移动开发 时间:
2021-06-15 17:41:05
阅读次数:
0
一、题目: 二、思路: 这道题的思路其实也很简单,但就是想不到。 我们考虑题目中的限制“编号为 \(x,y\) 的两个顶点有且只有一个同时在顶点 \(p\) 的子树与顶点 \(q\) 的子树里”,看到这样的限制就应该想到 DFS 序或者其他能将子树包含关系转化到序列包含问题的做法。 对于这道题,我们 ...
分类:
其他好文 时间:
2021-05-24 05:40:25
阅读次数:
0
题解 并不需要什么高级数据结构 用树链剖分维护 对于每种颜色开个 \(\text{vector}\),然后把是这种颜色的点的 \(\text{dfs}\) 序加进来排序 对于 \([dfn[top[x]],dfn[x]]\) 这一区间问有没有某种颜色 相当于问某种颜色有没有至少一个在这个区间内 直接 ...
分类:
其他好文 时间:
2021-01-25 11:14:34
阅读次数:
0
Codefroces 1328E Tree Querie 题目 给出一棵1为根,n个节点的树,每次询问$k_i$ 个节点,问是否存在这样一条路径: 从根出发,且每个节点在这条路径上或者距离路径的距离为1 题解 由于是从根出发的路径,所以 距离这条路径的距离为1=这个点的父亲在路径上 本身就在根出发的 ...
分类:
其他好文 时间:
2021-01-06 11:40:31
阅读次数:
0
题意: 链接:https://ac.nowcoder.com/acm/contest/5158/I 思路:树状数组主要针对的是区间(而且是一条线段的)求和问题,所以需要利用dfs序和数组 in [ ], out [ ] (前缀和原理),利用dfs进行搜索,每个点依次被访问的顺序就是每个点的dfs序, ...
分类:
编程语言 时间:
2020-10-05 21:24:06
阅读次数:
36
代码不想写就口胡了 1001.用 歌唱王国 的结论$E(A)=\sum_{i=1}^{len} a_{i}*m^i,\ a_{i}=is\_border(i)$回文串border就是回文自动机的fail直接上回文自动机比较字典序即可 1002. 1003.直接离线考虑每一位的贡献用个dfs序维护线段 ...
分类:
其他好文 时间:
2020-07-28 22:42:45
阅读次数:
90
虚树对于多次询问的时候有这优化复杂度的好处,其原理就是只保留有用节点和必须保留的有用节点的lca 先求一遍dfs序后,用栈模拟操作,根据lca是否在栈中确定是否要将lca加入栈,因为重构了树,因此原来的边的信息需要进行更换 对于本题,新的边其实就是路径上的边权的最小值,这是因为随便切掉一个边就能把他 ...
分类:
其他好文 时间:
2020-07-22 16:20:10
阅读次数:
75
跑ac自动机后使用fail树建立dfs序后跑树状数组维护答案 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1e6+10; struct node{ int cnt; node * nxt ...
分类:
其他好文 时间:
2020-07-19 00:37:01
阅读次数:
84
今天听了ztcdl的讲解,队友lkt,cyx带了我几道模板题,突然感觉自己行了,特写下强连通分量板子。(可能自己还没睡醒,有勇气写板子了) 强连通分量的预备姿势: ①树上的DFS序(时间戳):一句话,就是按照dfs的遍历顺序,把每个点再对应一个dfn数组,dfn[i]存的就是dfs序的时间戳。 ②D ...
分类:
其他好文 时间:
2020-07-15 23:56:52
阅读次数:
76
Cover the Tree 就当作是一个结论吧…当要用链覆盖所有的边时,对叶子节点根据dfs序排序后,根据$(i,i+s/2)$的配对规则进行配对即可,如果有奇数个叶子节点,则将其与根节点相连。 // Created by CAD on 2020/7/13. #include <bits/stdc ...
分类:
其他好文 时间:
2020-07-13 21:24:10
阅读次数:
94