做题记录 25.7.8
\(\textcolor{blue}\odot\) CF1691F K-Set Tree
枚举 \(u\),计算包含 \(k\) 个点的最小子树的根为 \(u\) 时的答案
设删除 \(u\) 后得到的连通块的集合为 \(S\)(即 \(S\) 为一个集族)
当根为 \(u\) 时,要在 \(\{1,2,\cdots,n\}\) 中选择 \(k\) 个,且至少属于 \(S\) 中的两个连通块,方案数为 \(\binom nk-\sum_{s\in S}\binom{|s|}k\),贡献系数为 \(n\),即总贡献为 \(n\left(\binom nk-\sum_{s\in S}\binom{|s|}k\right)\)
对于 \(s\in S\),当根在 \(s\) 中时,根有 \(|s|\) 种选法,贡献系数为 \(n-|s|\),选择 \(k\) 个点的方案数为 \(\binom {n-|s|}k-(\sum_{t\in S}\binom{|t|}k-\binom{|s|}k)\),总贡献为 \(|s|(n-|s|)\left(\binom {n-|s|}k-(\sum_{t\in S}\binom{|t|}k-\binom{|s|}k)\right)\)
容易 \(O(|S|)\) 计算一个 \(u\) 的贡献
总时间复杂度 \(O(n)\)
\(\textcolor{blue}\odot\) CF1695D2 Tree Queries (Hard Version)
特判 \(n=1\) 和链的情况
显然选择全体叶子一定合法,也显然不一定最优
对于叶子 \(u\),令 \(U_u\) 为从 \(u\) 开始走到第一个度数 \(>2\) 的点(无根树情况下),令 \(S=\{U_u\}\)
对于每个 \(u\in S\),可以选择一个直接连接的叶子(即两者间没有第二个度数 \(>2\) 的点),取消对这个叶子的选择,显然操作后 \(n\) 个点仍然可以区分
可证已经取到最优
时间复杂度 \(O(\sum n)\)

浙公网安备 33010602011771号