题目链接
题意
有$n$棵树,每棵树开始只有根节点,现有$q$次操作,每次在树上的间连一条边,或者询问间所有树上节点的子树大小之和是多少。
思路
每次加边都不同,可以把这些树都并到一棵树上去,因为实质上他们可以长得都一样,只不过我给每个树上节点标记一个作用范围。
关于子树大小问题,我们很容易想到借助$dfs$序转到序列上去做。相当于,我每次给一个位置的区间加一,或者询问任意两个位置区间差。
主席树裸题。于是传说中的$dfs$序建可持久化线段树就出现了。
1 |
|
1 |
|
有$n$棵树,每棵树开始只有根节点,现有$q$次操作,每次在树上的间连一条边,或者询问间所有树上节点的子树大小之和是多少。
每次加边都不同,可以把这些树都并到一棵树上去,因为实质上他们可以长得都一样,只不过我给每个树上节点标记一个作用范围。
关于子树大小问题,我们很容易想到借助$dfs$序转到序列上去做。相当于,我每次给一个位置的区间加一,或者询问任意两个位置区间差。
主席树裸题。于是传说中的$dfs$序建可持久化线段树就出现了。
1 | #include <bits/stdc++.h> |
1 | #include<bits/stdc++.h> |