1 条题解
-
0
题目大意
给定一棵 个节点的树,对于每个 ,求当选择 个节点作为参会者时,能够作为开会地点(使得所有参会者到该点的距离和最小)的候选点数量的最大值。
解题思路
关键观察
-
候选点的性质:在树中,使得所有参会者距离和最小的点集构成一条路径,这条路径就是树的直径在参会者点集诱导子图上的对应。
-
奇偶性分析:
- 当 为奇数时,答案总是 ,因为最优会议地点是唯一的中位数点
- 当 为偶数时,答案等于某条路径的长度加
-
问题转化:对于偶数 ,我们需要找到包含 个节点的连通子图,使得该子图的直径最大。
算法核心
-
树链剖分:通过两次 DFS 预处理出父节点、深度、子树大小、重儿子、链顶等信息,用于快速计算 LCA 和距离。
-
按最小子树大小分组:对于每个节点 ,计算 ,这表示包含 的最大连通块大小。
-
直径维护:从大到小枚举连通块大小,动态维护当前所有节点的直径端点,利用树的直径性质:
- 对于新加入的节点 ,检查是否能与当前直径端点 形成更长的直径
复杂度分析
- 时间复杂度:,主要来自树链剖分的 LCA 查询
- 空间复杂度:
-
- 1
信息
- ID
- 5101
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者