【学习笔记】树的直径,重心
草莓 Strawberry
膜拜 EternalAlexander- 假设 ∣ S ∣ ≥ 2 |S|\ge 2 ∣S∣≥2,设直径的两个端点为 s s s和 t t t
- 显然我们知道直径有一个中心
- 假如我起点不在半径上,那么我下一步会把所有在半径上的点占领
- 但是显然我可以把起点调整到半径上,然后把所有半径上的点占领
- 然后我们对于其他的点求出到半径上的点的最大距离,排序过后就可以得到 S × G S\times G S×G的的最大值
CF1387B2
- 对于一条边 ( u , v ) (u,v) (u,v),每条边对答案贡献最多为 2 min ( s i z [ u ] , n − s i z [ u ] ) 2\min(siz[u],n-siz[u]) 2min(siz[u],n−siz[u])
- 考虑找到重心,对除了重心外的点两两跨子树匹配
- 因为任意子树大小不超过 n 2 \frac{n}{2} 2n,所以存在两两配对的方案
- 细节问题就不说了
树的直径
- 给定一棵树,求编号 [ l , r ] [l,r] [l,r]内两点距离的最大值。 n ≤ 1 0 5 n\le 10^5 n≤105
- 考虑树上两个点集 S S S和 T T T,若集合 S S S中的最远点对是 u → v u\to v u→v, T T T中的最远点对是 w → x w\to x w→x,那么 S ∪ T S∪T S∪T的最远点对一定是 u → v u\to v u→v, w → x w\to x w→x, u → w u\to w u→w, u → x u\to x u→x, v → w v\to w v→w, v → x v\to x v→x 六对之一
- 可以线段树维护。可以用欧拉序列求 L C A LCA LCA平衡复杂度做到预处理 O ( n log n ) O(n\log n) O(nlogn),询问 O ( 1 ) O(1) O(1)。
- 总复杂度 O ( n log n ) O(n\log n) O(nlogn)。
哈夫曼树(Hufman Tree)
- 构造方法:每次取权值最小的两个点,加一个新的节点作为他们的父节点,将新的节点权值设为它们的前缀和。
__EOF__

本文作者:仰望星空的蚂蚁
本文链接:https://www.cnblogs.com/cqbzly/p/17530113.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/cqbzly/p/17530113.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2021-07-23 【模板】Splay
2021-07-23 【学习笔记】长链剖分
2021-07-23 【浅谈】置换群