题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3653 原来一直想怎么线段树合并.可是不会把角标挪一位. 查询的其实是子树内一段深度的点的 siz 和.因为是子树内,所以按 dfs 序建立主席树,角标是 dep ,值是 siz . 注意 long long .而且数组 *19 就会 RE ,*20就好了.不知为何. #include<iostream> #include<cstdio> #include<cstring…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3653 对于一个 (a,b,c),分成 b 是 a 的祖先和 b 在 a 子树里两部分: 第一部分 b 可以选 min(dep[a]-1,k) 个,c 可以选 siz[a]-1 个,乘起来即可: 第二部分,要求 ∑siz[u]-1,其中 u 是 a 子树内到 a 距离不超过 k 的点: 考虑到子树在 dfs 序上就是一段区间,距离范围又可以看作 dep 范围,所以在 dfs 序上建主席树,就…
题目描述 设 T 为一棵有根树,我们做如下的定义: 设 a 和 b 为 T 中的两个不同节点.如果 a 是 b 的祖先,那么称 “ a 比 b 不知道高明到哪里去了 ” . 设 a 和 b 为 T 中的两个不同节点.如果 a 与 b 在树上的距离不超过某个给定常数 x ,那么称 “ a 与 b 谈笑风生 ” . 给定一棵 n 个节点的有根树 T ,节点的编号为 1-n ,根节点为 1 号节点.你需要回答 q 个询问,询问给定两个整数 p 和 k ,问有多少个有序三元组 (a,b,c) 满足:1.…