题意:
$n$ 个节点的树,第 $i$ 个节点选择 $[1, i)$ 中一个点作为它的父节点。
求可能生成的所有 $n$ 个节点的树第 $k$ 个节点的度数之和。
$T \leq 10^5$,$n,k \leq 10^7$
数据很大,根据数据范围可以猜测复杂度为 $O(T polylog(n) polylog(k))$
然而感觉这个 $polylog(n)$ 和 $polylog(k)$ 没意义啊
所以考虑推柿子,每次 $O(1)$ 算答案
先看它往上走的度数
显然就是它的父节点贡献的度数
如果 $k=1$,显然 $k$ 号节点就是根节点,没有往上的度数
否则易知无论什么样的树它都有父节点,而树的总数是 $(n-1)!$,所以往上的度数就是 $(n-1)!$
把 $x!$ 做个前缀和,这一部分就是 $O(1)$ 的了
再看往下的度数,也就是它的子节点给它贡献的度数
$m$ 节点选中 $k$ 的情况占总情况数的 $\dfrac{1}{m - 1}$,对于所有 $k < m \leq n$ 都成立
那么所有这样的 $m$ 贡献的度数加起来 就是 $(n-1)!(\dfrac{1}{k} + \dfrac{1}{k + 1} + … + \dfrac{1}{n - 1})$
把 $\dfrac{1}{x}$ 做个前缀和,这一部分就也是 $O(1)$ 的了
两部分相加即为答案。
注意线性求逆元
1 |
|