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!

CF809E Surprise me! 莫比乌斯反演虚树树形DP

One day one cf,Keep Wa away from me.

ModuleNotFoundError:没有名为'surprise'的模块

python 安装surprise库解决 c++tools错误问题

Surprise库推荐算法