[NFLS 1462/4] 机房网络 题解

大意

给定一棵树, 有点权, 求两两间点权互质的点的距离之和.

题解

数论

考虑使用容斥.

p1,p2,,pkp_1, p_2, \cdots , p_k1max(ai)1 \to \max(a_i) 中的质数.

PxP_x 为树中两个点间点权的 gcd 为 xx 的倍数的路径集合, d(P)d(P)PP 的所有路径的长度之和.

那么

res=d(P1)d(Pp1Pp2Ppk)=d(P1)d(Ppi)+d(PpiPpj)+d(PpiPpjPpl)=d(P1)d(Ppi)+d(Ppipj)d(Ppipjpl)(ijl)\text{res} = d(P_1) - d(P_{p_1} \cup P_{p_2} \cup \cdots \cup P_{p_k}) = d(P_1) - d(P_{p_i}) + d(P_{p_i} \cap P_{p_j}) + d(P_{p_i} \cap P_{p_j} \cap P_{p_l}) \cdots = d(P_1) - d(P_{p_i}) + d(P_{p_i p_j}) - d(P_{p_i p_j p_l}) \cdots (i \not= j \not= l)

观察上式的系数以及 PxP_x 中的 xx 可以发现, x=1x = 1 时, 系数为 11, xx 有一个因数时, 系数为 1-1, 两个为 11, 三个为 1-1, 同时不存在 xx 有两个及以上因数的项.

可以发现符合莫比乌斯函数的性质.

所以

res=i=1max(aj)μ(i)d(Pi)\text{res} = \sum_{i = 1}^{\max(a_j)} \mu(i) \cdot d(P_i)

树论

现在要求 d(Px)d(P_x).

可以用树上启发式合并.

disxdis_x 为当前记录的子树中, xvalvx \mid val_vudepv\sum_u dep_v.

那么, 点 uu 的贡献为:

yvaluμ(i)(disx+depu2deplca)\sum_{y \mid val_u} \mu(i) \cdot (dis_x + dep_{u} - 2 \cdot dep_{lca})