专栏文章

题解:CF2122G Tree Parking

CF2122G题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@ming0jbz
此快照首次捕获于
2025/12/02 01:48
3 个月前
此快照最后确认于
2025/12/02 01:48
3 个月前
查看原文
计数基本功题。当然如果你直接贺 poly 板子求欧拉数了那我也没话说。
首先考虑对于一棵固定的树求答案:
可以考虑树形 dp,设 fuf_u 表示 uu 子树的方案数。那么转移时,我们可以任意内部排列所有子树的区间,最后再插入 uu 的区间。
uu 的区间不能和其他任意一个区间相交,因此有 2szu12sz_u-1 种可行的相对位置。子树的部分就是一个多重排列,因此可以得到转移式:
fu=(2szu1)vfv×(2szu2)!v(2szv)!f_u=(2sz_u - 1)\prod_v f_v \times \frac{(2sz_u - 2)!}{\prod_v(2sz_v)!}
可以通过考虑每个 szusz_u 的计算次数来化简,得到 f1=(2n1)!2n1v1szv=(2n)!2nvszvf_1 = \frac{(2n - 1)!}{2^{n-1}\prod \limits_{v\neq 1} sz_v}=\frac{(2n)!}{2^n\prod\limits_{v}sz_v}
考虑 1szv\prod\frac{1}{sz_v} 的组合意义。我们知道 n!szv\frac{n!}{\prod sz_v} 表示树的拓扑序个数,因此我们可以枚举所有可能的拓扑序,计算合法的树的数量,求和后除以 n!n!。而这里所有的 11 开头的拓扑序都是等价的,所以有 (n1)!(n-1)! 种对称情况,因此最后只需要乘上 1n\frac{1}{n}
固定拓扑序的情况下计算树的个数是容易的,我们只需要按照拓扑序插入所有的点。设 dpn,kdp_{n, k} 表示 nn 个点的树有 kk 个叶子的方案数。那么有转移式 dpn,k=(nk)dpn1,k1+kdpn1,kdp_{n, k} = (n - k) dp_{n - 1, k - 1} + kdp_{n - 1, k},两项分别表示把第 nn 个点接在叶子下面还是接在根下面。
容易与欧拉数的组合意义建立双射:dpn,kdp_{n, k} 实际上就是长度为 n1n-1 的排列,有 k1k - 1 个相邻上升的排列数量(这里产生 1-1 是因为我们把根挖掉了)。
所以问题就变成了求单项欧拉数 A(n,k)A(n, k)。可以考虑二项式反演,设 gtg_t 表示钦定 tt 个上升的方案数,那么会形成 ntn-t 段,每段内部唯一。
这里可以用 EGF 解决,以凑出多重排列的系数:也就是要求 [xn](ex1)nt[x^n](e^x-1)^{n-t},因为每段非空。进行展开:
gt=[xn](ex1)nt=[xn]i=1nteix(1)nti(nti)=i=1ntin(1)nti(nti)g_t = [x^n](e^x-1)^{n-t}\\ = [x^n]\sum\limits_{i = 1} ^ {n - t} e^{ix}(-1)^{n - t - i}\binom{n - t}{i}\\ =\sum\limits_{i = 1} ^{n - t} i ^n(-1)^{n - t - i}\binom{n-t}{i}
再做二项式反演:答案 =t=kn1(tk)(1)tkgt=\sum\limits_{t = k}^{n - 1}\binom{t}{k}(-1)^{t-k}g_t,带入化简:
t=kn1(tk)(1)tkgt=t=kn1(tk)(1)tki=1ntin(1)nti(nti)\sum\limits_{t = k}^{n - 1}\binom{t}{k}(-1)^{t-k}g_t \\ =\sum\limits_{t = k}^{n - 1}\binom{t}{k}(-1)^{t-k}\sum\limits_{i = 1} ^{n - t} i ^n(-1)^{n - t - i}\binom{n-t}{i}
合并 1-1 的幂并交换求和号:
=t=kn1(tk)i=1ntin(1)nki(nti)=i=1nkin(1)nkit=kni(tk)(nti)=\sum\limits_{t = k}^{n - 1}\binom{t}{k}\sum\limits_{i = 1} ^{n - t} i ^n(-1)^{n - k - i}\binom{n-t}{i} \\ =\sum\limits_{i = 1} ^{n - k} i ^n(-1)^{n - k - i}\sum\limits_{t = k}^{n - i}\binom{t}{k}\binom{n-t}{i} \\
后面这个组合数求和可以这样考虑:(tk)\binom{t}{k}1(1x)k+1\frac{1}{(1-x)^{k + 1}}xtkx^{t - k} 次项系数,(nti)\binom{n-t}{i}1(1x)i+1\frac{1}{(1-x)^{i + 1}}xntix^{n-t-i} 次项系数。所以乘起来求和就是 1(1x)i+k+2\frac{1}{(1-x)^{i+k+2}}xnkix^{n-k-i} 次项系数,即 (n+1i+k+1)\binom{n + 1}{i + k + 1}
因此所求为 =i=1nkin(1)nki(n+1i+k+1)=\sum\limits_{i = 1} ^{n - k} i ^n(-1)^{n - k - i}\binom{n + 1}{i + k + 1}
最终答案为:
(2n!)n2ni=1nkin1(1)nki(ni+k)\frac{(2n!)}{n2^n}\sum\limits_{i=1}^{n-k}i^{n-1}(-1)^{n-k-i}\binom{n}{i + k}
O(n)\mathcal O(n) 计算即可。

评论

0 条评论,欢迎与作者交流。

正在加载评论...