1 条题解
-
0
重心概率题解
思路
每个顶点 都恰好选择一个编号更小的父亲,因此任意父亲序列都对应一棵以 为根的递增树,总树数为 。令
对于顶点 ,记 为以 为根的子树大小至少为 的递增树数量, 为顶点 是重心的递增树数量。
做法
子任务 1:子树大小分布 DP
固定根 。按编号从 到 加入新顶点,令 表示当前 的子树 大小为 的父亲选择方案数。处理顶点 时,它有 个父亲会使其加入该子树, 另有 个父亲使其留在子树外,因此
$$dp'_{s+1}\mathrel{+}=s\,dp_s,\qquad dp'_s\mathrel{+}=(v-1-s)dp_s.$$初始时 ,最后把 的状态相加即得 。对每个 独立执行这套分布 DP,总复杂度为 ,可以通过 。另外,对 还可枚举全部 个父亲序列,作为完全独立的正确性核验。
子任务 2:枚举子树大小
固定 ,再固定 的子树大小为 。从 中选出 个后代后,按递增树的父亲选择规则计数,可得方案数
因此
$$A_i=(i-1)(n-i)!\sum_{k=m+1}^{n-i+1} \frac{(n-k-1)!}{(n-i-k+1)!},$$而 。使用阶乘和逆阶乘逐项求和,复杂度为 。
一棵奇数点树有唯一重心。若 的子树大于一半,则重心必在该子树内;反之,若 重心是 的后代,则 的子树必大于一半。对于固定的重心 ,递增树中 “ 是 的祖先”的比例为 ,且重心条件只与 的后代结构和子树大小 有关,不受这段祖先选择影响。
令 ,便有
所以从大到小计算
子任务 3:化简组合和式
把子任务 2 的求和变量改写后使用曲棍球棒恒等式:
$$\sum_{r=0}^{m-i+1}\frac{(r+i-2)!}{r!} =(i-2)!\binom{m}{i-1}.$$于是对 都有统一公式
当 时,顶点 的子树最多有 个点,不可能成为重心, 故 。预处理阶乘、逆阶乘和逆元后,即可在线性时间算出所有 。
也可以用相邻项递推独立核验公式:
正确性证明
父亲序列与合法递增树一一对应。子任务 1 的两个转移分别枚举新顶点的父亲是否在 当前子树中,选择数之和始终为 ,所以分布 DP 不重不漏。对子任务 2,固定 的子树顶点集合及大小后,子树内部与外部的父亲选择相互独立;逐个乘起可选父亲 数便得到所列固定 方案数,因此求和恰好得到 。
在任意奇数点树中,从根开始不断走向大小超过 的唯一儿子,最终停下的位置就是 唯一重心。因此“ 的子树大小超过 ”等价于“重心位于 的子树内”。当重心 固定时, 的祖先结构仍是标准递增树祖先选择; 成为 祖先的概率为 。于是 ,逆序递推不重不漏地恢复每个 。
最后,组合恒等式把同一个精确的 求和式化为闭式,并未改变计数对象。故满分 算法输出的每个 都等于顶点 成为重心的合法树数。
复杂度
- 子任务 1:时间 ,空间 。
- 子任务 2:时间 ,空间 。
- 子任务 3:时间 ,空间 。
- 1
信息
- ID
- 1317
- 时间
- 3000ms
- 内存
- 512MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者