「Luogu-P5162」WD与积木
9102 年的第一篇 blog。
大概算是我用 NTT 切的第一道非模板题。
其实本来应该是这道。不过调不出来了弃了。
首先我们会有一种想法是将方案数和每种方案的层数和分别求出来,然后一除就可以了。我们令 $F[i]$ 表示 $i$ 块积木所有堆放方案的层数和,$G[i]$ 表示 $i$ 块积木的堆放方案数。
首先考虑如何求方案数。我们可以枚举第一层放了哪些积木。于是我们大胆地写出这样一个 $n^{2}$ 的方程:
但是这样对吗?
代入 $n=0$ 我们发现
注意到,这主要是因为 $C_{n}^{0}=1$ 导致的,因此我们强行将它定义成 $0$ 就好了。
那然后 $G[0]$ 应该等于几?
所以说 $G[0]=1$。
如果说您再往下算几项,您就会发现令 $G[0]=1$ 是一个正确的选择。
再然后,我们看到这个式子像极了卷积。我们先来把组合数拆开
定义
注意到我们在运算时先除以了 $n-i$ 的阶乘,累加完之后又乘了一个 $n$ 的逆元。这就启示我们,如果我们定义
就可以得到
注意不要忘了 $+1$。因为很明显地 $G^{\prime}H[0]=0$,而 $G^{\prime}[0]=1$。
然后我们就有
然后接下来我们并不需要还原出 $G$。直接考虑 $F$,也就是层数和。
首先还是枚举第一层放了哪些积木。不过需要注意的是,因为我们把第一层单独考虑了,因此每有一种堆放方案,我们就要再多算上一层。因此
然后我们拆开组合数,引入上面的 $H$ 数组,并令 $F[0]=0$。至于为什么,留作习题自证(
不过这次我们就不需要 $+1$ 了。
解上面的方程,我们得到
然后我们总结一下
最后的答案,也就是 $n$ 块积木的期望层数,就是 $\cfrac{F[n]}{G[n]}$。然后不难发现 $\cfrac{F^{\prime}[n]}{G^{\prime}[n]}=\cfrac{F[n]}{G[n]}$。
我就是不贴代码(
反正会的应该都能写出来了吧(