【题解】树网的核

Core树网的核

ECC(F) 一定和直径的两个端点有关。因为任意节点 x 的最远点一定是两个端点之一。

不妨设直径上的点 x 到直径两端的距离的较小值为 f_x , x 到非直径点的最大距离为 g_x。那么 f_x>=g_x,否则和直径的最大性矛盾。

现在我们对每个直径上的节点求出 g_x。容易发现两端点的贡献就是到左右端点的距离。然后发现,路径两端的节点l,r的贡献一定大于 g_x,x 不在路径上。

注意对于路径中间的节点t,有可能 g_t>max(f_l,f_r),因为 g_t<=f_t,f_t可能比两个端点大。

那么记录一个全局变量 res,每次取 res 和 l,r 贡献的最大值即可。

时间复杂度 O(n)。


__EOF__

本文作者仰望星空的蚂蚁
本文链接https://www.cnblogs.com/cqbzly/p/17530363.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   仰望星空的蚂蚁  阅读(12)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示