uoj#33. UR #2树上GCD

Posted xjqxjq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uoj#33. UR #2树上GCD相关的知识,希望对你有一定的参考价值。

题目描述

题解

考虑到恰好为 $i$ 不好求,我们可以求 $i$ 的倍数的个数然后容斥。于是我们可以枚举 $x$ 作为 $ ext{lca}$ ,我们要计算 $d(u,x),d(v,x)$ 都是 $i$ 的倍数的 $(u,v)$ 数对数。因为这个跟深度有关,容易想到长链剖分。但是我们不能去跳最深深度的倍数,所以我们考虑分块,如果 $deep>sqrt n$ ,那么单次跳不会超过 $sqrt n$ 次,否则我们可以设 $g[i][j]$ 表示 $dp[v] \% i=j$ 的 $v$ 的个数,枚举 $i$ 即可。这样就避免了枚举最深深度,因此总效率为 $O(n sqrt n)$ 。

以上是关于uoj#33. UR #2树上GCD的主要内容,如果未能解决你的问题,请参考以下文章

uoj33 UR #2树上GCD

UOJ UR#2树上GCD(缓存)

UOJ树上gcd

uoj#370UR #17滑稽树上滑稽果

UOJ #62. UR #5怎样跑得更快

UOJ#50UR #3链式反应(分治FFT,动态规划)