CF809E 题解

发布时间 2023-08-16 16:42:59作者: Albertvαn

一棵树,点权 \(a_i(a_i\le n)\),无边权,求

\[\sum_{i\ne j}\varphi(a_ia_j)\text{dis}(i,j) \]


首先,你没有任何手段求 \(10^{10}\) 级别的一堆离散的 \(\varphi\)。于是

\[\varphi(xy)=\frac{\varphi(x)\varphi(y)\gcd(x,y)}{\varphi(\gcd(x,y))} \]

然后一通莫反,枚举 \(\gcd\)

\[\sum_{d=1}^n \sum_{x=1}^n \sum_{y=1}^n [\gcd(x,y)=d]\frac{\varphi(x)\varphi(y)d}{\varphi(d)}\sum_{a_i=x,a_j=y}\text{dis}(i,j) \]

\[\sum_{T=1}^n\left(\sum_{d|T}\mu\left(\frac Td\right)\frac d{\varphi(d)}\right)\left(\sum_{x=1}^{n/T} \sum_{y=1}^{n/T} \varphi(xT)\varphi(yT) \sum_{a_i=x_T,a_j=y_T}\text{dis}(i,j)\right) \]

前者暴力求,后者就是

\[\sum_{T=1}^n \sum_{i\ne j}[T|a_i,T|a_j] \varphi(a_i)\varphi(a_j)\text{dis}(i,j) \]

可以点分。或者对于每个 \(T\)\(a\)\(T\) 的倍数的点暴力揪出来建虚树,然后

\[\sum_{i=1}^k \varphi(a_i) \sum_{j=1,j\ne i}^k \varphi(a_j)\text{dis}(i,j) \]

可以换根dp。保证 \(a\) 为排列的话总复杂度 \(O(n\ln n)\)。否则可以卡成 \(\Theta(n\max_{x=1}^n \sigma(x))\)