CF1824B1

原题

翻译

这题不算难,但我想错了

k=1时,答案就是关键点;当k=3时,答案就是三个节点组成路径的中间点(我想成了是一条路径),因此对于这两种情况我们只需要输出1即可

而当k=2时答案才是一条路径,因此我们考虑怎么计算k=2的情况

我们反向思考,考虑对于每个点,看当他作为好点(以下设这个点为x)时2个关键节点可以怎么选

我们发现答案有两种情况:

  • 两个节点都在以x为根的子树里,并且他们不在同一个x的儿子的子树里

  • 一个节点在以x为根的子树里,但另一个节点在x子树外

我们只需要对这两种情况分别计算贡献即可

定义sizi表示x点第i个儿子子树大小,si表示i点儿子个数,则对于点x,第一种情况答案为

i=1sx1j=i+1sxsizisizj=(i=1sxsizi)2i=1sxsizi22

别忘记加上第二种情况即可

最终复杂度O(n)

posted @   FOX_konata  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示