标签:size span gcd nlog nbsp font lca ISE 解决
题解:
一道很套路的题目
首先一个结论
$\phi(xy)=\frac{\phi(x)*\phi(y)*gcd(x,y)}{\phi(gcd(x,y))}$
这个按照$\phi$的定义很容易知道
然后我们可以枚举gcd,很套路的可以莫比乌斯反演
然后变成给出k个点,求他们$\phi(x)*\phi(y)*dis(x,y)$
考虑所以gcd的点数为$\frac{n}{1}+\frac{n}{2}+\frac{n}{3}$=$nlogn$
于是我们需要一个与点数相关的算法
考虑虚树
之后有两种办法解决$\phi(x)*\phi(y)*dis(x,y)$
一种是考虑一个节点和它儿子节点的关系,那么就处理一下子树信息就行了
一种是把$dis(x,y)$写成$dis(x)+dis(y)-2*dis(lca(x,y))$然后dp一下
标签:size span gcd nlog nbsp font lca ISE 解决
原文地址:https://www.cnblogs.com/yinwuxiao/p/10356921.html