CF809E

给一颗树,求

\[\frac1{n(n-1)}\sum_{i=1}^n\sum_{j=1}^nφ(a_i*a_j)*dis(i,j)\\ 一个柿子φ(ab)=φ(a)φ(b)φ(gcd(a,b)) \]

代入

\[\sum_{i=1}^n\sum_{j=1}^nφ(a_i)φ(a_j)\frac{gcd(a_i,a_j)}{φ(gcd(a_i,a_j))}dis(i,j)\\ 提出来,相当于令d=那一坨\\ \large\sum_{d=1}^n\frac d{φ(d)}\sum_{i=1}^n\sum_{j=1}^n[gcd(a_i,a_j)=d]φ(a_i)φ(a_j)dis(i,j)\\ \]

尝试设一个函数换掉一大坨,我们康到分数后的一大坨大概和\(d\)有关,令

\[f(d)=\sum_{i=1}^n\sum_{j=1}^n[gcd(a_i,a_j)=d]φ(a_i)φ(a_j)dis(i,j) \]

搞个反演,假装有

\[F(x)=\sum_{x|d}f(d) \]

求解\(F(x)\)不难发现

\[F(x)=\sum_{i=1}^n\sum_{j=1}^nφ(a_i)φ(a_j)[x|gcd(a_i,a_j)]dis(i,j) \]

并且

\[f(x)=\sum_{x|d}F(d)*μ(\frac dx) \]

\(a\)\(1\sim n\)的排列,涉及到点总数为\(n\ln n\)的,所以枚举\(x\),把\(x|d\)的点拿下来建虚树,

式子变成,\(m\)个点,点有点权,求:

\[\sum_{i=1}^m\sum_{j=1}^mv_i*v_j*dis(i,j)\\ \sum_{j=1}^m\sum_{j=1}^mv_i*v_j*(dep_i+dep_j-2*dep_{lca})\\ 令s=v_i*v_j\\ \sum_{i=1}^m\sum_{j=1}^ms*dep_i+s*dep_j-2*s-dep_{lca}\\ \]

拆成三个\(\sum\)

不难发现前两个相同,显然可以\(O(m)\)处理

后面那一坨,需要在树上\(dp\),在\(lca\)处合并答案,\(dp_i\)表示\(i\)内部子树权值总和,换根\(dp\)

建虚树\(log\),复杂度\(O(nlog^2n)\)

代码仙姑(先咕)

posted @ 2020-10-13 17:21  INFP  阅读(85)  评论(0编辑  收藏  举报