CF1039D

题目描述

一棵树是一个其中每对顶点之间恰好有一条简单路径的无向图。我们称一组简单路径为 k-可行集,当且仅当树中的每个顶点至多属于其中一条路径(包括端点),且每条路径恰好包含 k 个顶点。

给定一棵有 n 个顶点的树。对于每个 k(1\(\le\)k\(\le\)n),求 k-可行集的最大可能大小。

\(n\le10^5\)

正解

注意到当 k 较大时答案在值域上分布稠密,k 较小时分布稀疏,考虑根号分治,设分治界点为 B。当 k\(\le\)B 时,dfs 找到每个点的子树中的两条长链,贪心判断能否形成路径,不能则向上传递。时间复杂度 \(O(nB)\)。当 k>B 时,由于答案分布区间只能是 [1,n/B],可以二分 n/B 次,每次找到 n/B 和 (n/B+1) 之间的分界点,check 用上一种情况的 dfs,时间复杂度 \(O(\frac{n}{B}n\log_2n)\),总时间复杂度 \(O(nB+\frac{n}{B}n\log_2n)\) ,根据基本不等式,取 B=\(\sqrt {n\log_2n}\) 时最优。

posted @ 2026-07-19 14:14  KarS123  阅读(3)  评论(0)    收藏  举报