题目
先求得GCD是 i i i的倍数的点对数再反演。
用长链剖分求出子树内各个深度的节点个数,然后在合并子树的时候统计答案。
先求出深度小的子树 v v v的每个 i i i的倍数的点数,再 O ( m a x d e p v ) O(maxdep_v) O(maxdepv)枚举 i i i,在之前的子树中求出 i i i的倍数的点数,然后乘起来即可。
在之前的子树中可以如果 i > S i>S i>S就暴力, i < S i<S i<S的就通过维护一个 g [ i ] [ j ] g[i][j] g[i][j]表示深度 m o d i = j \bmod i=j modi=j的点数来统计。
这个 g g g的维护就是树上 d s u dsu dsu。。。
也可以暴力,平衡一下复杂度
UOJ #33. 【UR #2】树上GCD
最新推荐文章于 2021-03-30 09:47:19 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)