题解:CF1553G Common Divisor Graph

· · 题解

首先有一个优美的性质是答案一定不会超过 2。考虑选定结点 S,T,则此时添加了新结点 a_S(a_S+1)a_T(a_T+1)

因为 a_S\mid a_S(a_S+1)a_T\mid a_T(a_T+1)2\mid \gcd(a_S(a_S+1),a_T(a_T+1)),于是此时 S\to T 已经连通。容易证明不论 a_S,a_T 取何值,都可以通过两次操作使得两点连通。

于是只需要判断答案是否可以是 01

壹、答案为 0

此时 ST 已经连通。观察到值域为 10^6 级别,而边的数量虽然很多,但是可以通过枚举倍数的方式来连接。因此对于每一个存在值的 x 都只需要枚举其倍数 kx,判断其是否有值。容易发现这样建边,边数是调和级数的。判断连通性只需要使用并查集即可。该部分时间复杂度为 O(\alpha n\log n)

贰、答案为 1

考虑到 n\le 10^6 时,\omega(n)\le 7,且 \gcd(x,x+1)=1。因此考虑对于每一个 a_S,若存在一质数 p 使得 p\mid a_Sp\mid a_T+1,或 p\mid a_S+1p\mid a_T,则可以对 ST 执行恰好一次操作,使得图连通。又因为 \omega(a_i)\le 7,因此直接暴力处理每一个 a_ia_i+1 的所有质因子即可。

叁、答案为 2

因为答案的值为 0,1,2 中的一个,因此剩余情况的答案均为 3