Snow终于得知母亲是谁,他现在要出发寻找母亲。王国中的路由于某种特殊原因,成为了一棵有n个节点的根节点为1的树,但由于"Birds are everywhere.",他得到了种种不一样的消息,每份消息中都会告诉他有两棵子树是禁忌之地,于是他向你求助了。他给出了q个形如"x y"的询问,表示他不能走 ...
分类:
其他好文 时间:
2019-11-10 17:31:49
阅读次数:
85
黑科技——树剖两次$dfs$转一次$dfs$! 重所周知,树链剖分通常是要$dfs?$两次的,就像这样: 但是在一些$n$比较大并且的~~卡常毒瘤题~~中,我们如果使用了两次$dfs$就有可能会出现$tle$的情况。 在这时,若我们无法优化本质算法的情况下我们需要卡常。 怎么卡呢?利用$dfs$序: ...
分类:
其他好文 时间:
2019-11-09 15:31:48
阅读次数:
85
题目大意 给你一个树,每个节点上有有一个部落,以及部落的人数,要你求出每个节点的子树里面人数最多的部落是哪一个(人数相同部落编号最小的)。 思路 ~~全网第一篇分治题解~~ 考虑树的dfs序,然后分治处理,每层只处理跨过mid的区间,然后就完了。 时间复杂度$O(nlogn)$,但常数比树上启发式合 ...
分类:
其他好文 时间:
2019-11-06 22:51:24
阅读次数:
170
直接把 r 加进去建虚树, 考虑虚树上的dp, 我们考虑虚树的dfs序的顺序dp过去。 dp[ i ][ j ] 表示到 i 这个点为止, 分成 j 组有多少种合法方案。 dp[ i ][ j ] = dp[ i - 1 ][ j ] * (j - have[ i ]) + dp[ i - 1 ][ ...
分类:
其他好文 时间:
2019-11-06 00:33:37
阅读次数:
86
递归爆栈了,改了半天非递归的,记录一下 求以某个结点为根的子树中权值大于k的结点的数量 C++ include using namespace std; const int maxn = 1000010; typedef long long ll; int in[maxn], out[maxn], ...
分类:
其他好文 时间:
2019-11-01 20:06:18
阅读次数:
58
猴猴的比赛 dfs序 两颗$n$节点的树,不相同,问多少点对$(u,v)$在两棵树上均满足路径$v$在$u$子树中 $n\le 10^5$ 暴力: $n^2$暴力枚举点对用$dfs$序$O(1)$判断是非满足条件,~~或者用欧拉序$O(1)$求lca~~ 正解: 先跑第一棵树,求出其$dfs$序,记 ...
分类:
其他好文 时间:
2019-11-01 16:47:04
阅读次数:
78
传送门 ?题意 给你一颗 n 个节点的树,每个节点被染上了颜色; 有 m 次操作,每次操作的类型有两种 1 v c : 将以 v 为根的子树的结点全部涂成 c 2 v : 询问以 v 为根的子树的结点中不同颜色的数量 1 v c : 将以 v 为根的子树的结点全部涂成 c 2 v : 询问以 v 为 ...
分类:
其他好文 时间:
2019-10-30 18:49:58
阅读次数:
66
题目限制2000 ms 256 M题目描述猴猴今天要和小伙伴猩猩比赛爬树,为了公平不碰撞,猴猴和猩猩需要在不同的树上攀爬。于是它们选了两颗节点数同为n的树,并将两棵树的节点分别以1~n标号(根节点标号为1),但两棵树的节点连接方式不尽相同。现在它们决定选择两个标号的点进行比赛。为了方便统计,规定它们 ...
分类:
其他好文 时间:
2019-10-29 22:04:30
阅读次数:
110
浅谈DFS序 本篇随笔简要讲解一下信息学奥林匹克竞赛中有关 树的DFS序 的相关内容。 DFS序的概念 先来上张图: 树的DFS序,简单来讲就是对树从根开始进行深搜,按搜到的时间顺序把所有节点打上时间戳。 就比如上面这棵树,它的 一个DFS序 就是: 1 2 8 8 5 5 2 7 7 4 3 9 ...
分类:
其他好文 时间:
2019-10-29 14:00:41
阅读次数:
71
传送门 "Luogu" 解题思路 发现一个性质: 对于所有的宝藏点 ${a_1,a_2...a_k}$ ,按照dfs序递增排列,答案就是: $dis(a_1, a_2) + dis(a_2, a_3) + \cdots + dis(a_{k 1}, a_k) + dis(a_k, a_1)$ 考虑加 ...
分类:
其他好文 时间:
2019-10-27 10:44:53
阅读次数:
49