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}\) 时最优。

浙公网安备 33010602011771号