题解 P4931 【情侣?给我烧了!(加强版)】

Elegia

2018-11-05 20:54:21

Solution

给出一个生成函数爆算递推式的方式: 不妨设 $D_n$ 是这个问题的“错排”:每对情侣都不在一排的方案数。那么对于答案 $f(n, k)$ 来说就可以用 $D_n$ 进行表示,即考虑坐在一排的情侣是哪几对且他们在哪几排,即 $$ f(n,k) = \binom nk^2 D_{n-k} k!2^k $$ 这自然而然地导出了恒等式 $$ \sum_{k=0}^n \binom nk^2 D_{n-k}k!2^k = (2n)! $$ 其中 $\binom nk^2$ 引导我们将生成函数写成 $$ f(z) = \sum_{n=0}^\infty \frac{a_n}{n!^2} z^n $$ 那么因为 $$ \sum_{n=0}^\infty \frac{n!2^n}{n!^2} z^n = \mathrm{e}^{2z} $$ $$ \sum_{n=0}^\infty \frac{(2n)!}{n!^2}z^n = \frac1{\sqrt{1-4z}} $$ 带入原始,我们得到了 $D(z)$ 的生成函数方程 $$ D(z) \cdot \mathrm e^{2z} = \frac1{\sqrt{1-4z}} $$ 因此 $$ D(z) = \frac{\mathrm e^{-2z}}{(1-4z)^{1/2}} $$ 这帮助我们得到一个式子用于计算 $D_n$(其实就是容斥) $$D_n = \sum_{k=0}^n \binom nk^2 (-2)^kk! (2n - 2k)!$$ 或者也可以直接卷积,但是这都不够快速。我们考虑对 $D(z)$ 进行求导。 $$ D'(z) = \frac{8z\cdot \mathrm e^{-2z}}{(1-4z)^{3/2}} = \frac{8z}{1-4z} D(z) $$ 这个微分方程可以帮助我们写出 $D(z)$ 的递推形式了,即 $$ D'(z) = 4zD'(z) + 8zD(z)$$ 提取系数有 $$D_{n+1} = 4n(n+1)D_n + 8n^2(n+1)D_{n - 1}$$