码迷,mamicode.com
首页 > 其他好文 > 详细

uoj#33. 【UR #2】树上GCD

时间:2020-03-07 20:30:22      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:因此   计算   href   超过   ext   表示   gcd   problem   避免   

题目描述

题解

考虑到恰好为 $i$ 不好求,我们可以求 $i$ 的倍数的个数然后容斥。于是我们可以枚举 $x$ 作为 $\text{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

标签:因此   计算   href   超过   ext   表示   gcd   problem   避免   

原文地址:https://www.cnblogs.com/xjqxjq/p/12436788.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!