CF809E Surprise me!
Posted yinwuxiao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF809E Surprise me!相关的知识,希望对你有一定的参考价值。
题解:
一道很套路的题目
首先一个结论
$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一下
以上是关于CF809E Surprise me!的主要内容,如果未能解决你的问题,请参考以下文章
CF809E Surprise me! 莫比乌斯反演虚树树形DP
One day one cf,Keep Wa away from me.
ModuleNotFoundError:没有名为'surprise'的模块