专栏文章
题解:CF2161F SubMST
CF2161F题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @min8u3do
- 此快照首次捕获于
- 2025/12/01 22:27 3 个月前
- 此快照最后确认于
- 2025/12/01 22:27 3 个月前
接下来对于一个点集 ,对于在 的虚树上出现的所有点, 是虚点, 是实点。
首先你会看错题,以为只需要求虚树大小,答案是 ,其中 表示以 为根的 的子树的大小。
但事实上不是这样的,因为那些虚树上的虚点不存在,所以不能直接用边连通。
我们考虑对于每个虚点算他额外的贡献。我们先定义对于虚点算哪些贡献:对于点集 ,把其生成树上的边放在原树上,删去我们已经计算过的虚树的边,会剩下若干条链,容易发现这些链的一段是虚点一段是实点,我们计算所有链头挂在这个虚点上的链的贡献。
对于一个虚点 ,设他在虚树上的度数为 ,根据定义 。考虑找到一个实点 满足 最小,贡献为 ,即所有链都是 。
证明是容易但是繁琐的,这里不赘述。至于为什么是 ,因为 已经算过一次,而且 没有贡献。
接下来是简单的。枚举 ,,我们枚举 ,对于 的每个儿子统计出 的数量。
把 和 的贡献单独算, 不用管,因为 。
把 拿出来之后需要求 ,组合意义是钦定一个子树里面有实点的方案数,所以 ,其中 是我们统计的 的数量, 是其总数。
时间复杂度 。
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...