T2-简单 MST题解
题意
设 ω ( x ) \omega(x) ω(x)为 x x x的质因数所构成的集合大小;
给两个正整数 l l l r r r,图上有 r − l + 1 r-l+1 r−l+1个点,为
l , l + 1 , l + 2 , ⋯ , r − 2 , r − 1 , r l,l+1,l+2,\cdots,r-2,r-1,r l,l+1,l+2,⋯,r−2,r−1,r
任意图上两点 x x x y y y之间的边权为 ω [ l c m ( x , y ) ] \omega[lcm(x,y)] ω[lcm(x,y)],求这张图的最小生成树的权值和。
思路
设 G ( x ) G(x) G(x)为 x x x的质因数所构成的集合。
很容易想到要首先连质数,即连 ω ( x ) = 1 \omega(x)=1 ω(x)=1的数,那么边权为 ω ( y ) + 1 \omega(y)+1 ω(y)+1或 ω ( y ) \omega(y) ω(y)。
但是,除了和质数连边以外还有和 G ( x ) ⊆ G ( y ) G(x)\subseteq G(y) G(x)⊆G(y) 的点连边的边权为 ω ( y ) \omega(y) ω(y)。
显然,暴力枚举 x x x是不现实的,因此我们只需要求出和 y y y最接近的满足上述条件的点就可以了,具体来说是在筛素数的过程中记录每个数的所有质因子的乘积,这样就可以 O ( 1 ) O(1) O(1)判断是否满足。
最后,将所有点和对应上述点进行连边,跑一遍最小生成树即可,总体复杂度为 O ( r log r ) O(r\log r) O(rlogr)。