[MtOI2018]情侣?给我烧了!

Solution

看到恰好这一关键词,容易想到二项式反演,那么接下来就上套路。令 \(F(x)\) 表示先强制 \(k\) 对情侣和睦,剩下的人随便安排座位的方案。

\[F(x)=\binom{n}{x}^2x!2^x(2n-2x)! \]

上式组合意义为先令其中特定 \(x\) 行是和睦的(\(\binom{n}{x}\) 种),然后选 \(x\) 对情侣分别和这些排匹配(\(\binom{n}{x}x!\) 种),一对情侣的顺序可以交换(\(2^x\) 种),剩下的人随便填(\((2n-2x)!\) 种)。

\(G(x)\) 表示恰好有 \(x\) 对情侣是和睦的的方案数,容易知道

\[F(x)=\sum_{i=x}^n \binom{i}{x} G(i) \]

那么

\[G(x)=\sum_{i=x}^n (-1)^{i-x} \binom{i}{x} F(i)=\sum_{i=x}^n (-1)^{i-x} \binom{i}{x} \binom{n}{i}^2i!2^i(2n-2i)! \]

\(G(x)\)\(O(n)\) 的,每次询问求 \(n\) 次,总复杂度 \(O(Tn^2)\),显然过不了,考虑优化。

将二项式系数展开成阶乘,再将无关变量提到前面,有

\[G(x)=\sum_{i=x}^n (-1)^{i-x}2^i \frac{i!n!n!i!(2n-2i)!}{x!(i-x)!i!i!(n-i)!(n-i)!}=\frac{(n!)^2}{x!}\sum_{i=x}^n (-1)^{i-x}\frac{2^i}{(i-x)!} \binom{2n-2i}{n-i} \]

变换下指标

\[G(x)=\frac{2^x(n!)^2}{x!}\sum_{i=0}^{n-x}\binom{2n-2x-2i}{n-x-i}\frac{(-2)^i}{i!} \]

如果把 \(n-x\) 看成一个整体,那么后面的和式就和 \(n\)\(x\) 无关了,令

\[g(m)=\sum_{i=0}^m \binom{2m-2i}{m-i}\frac{(-2)^i}{i!} \]

把所有 \(g(m)\) 处理出来,复杂度 \(O(n^2)\),查询 \(O(1)\)。那么

\[G(x)=\frac{2^x(n!)^2}{x!} g(n-x) \]

总复杂度 \(O(n^2+Tn)\)

\[T\leq 2\times 10^5,n\leq 5\times 10^6 \]

单次询问改为只询问一个特定的 \(k\)

Solution

需要快速求出 \(g(m)\) ,那么最好是能 \(O(n)\) 递推。令 \(G(z)\) 是序列 \(<g(0),g(1),\dots>\) 的生成函数。观察到 \(G(x)\) 实际上是两个函数的卷积,

\[G(z)=\sum_{i\geq 0} \binom{2i}{i} z^i \sum_{i\geq 0} \frac{(-2)^i}{i!} z^i \]

后面的显然是 \(e^{-2z}\) ,观察到前面的包含一个 \(\binom{2i}{i}\),所以考虑可以由卡特兰数得到。卡特兰数是

\[C_n=\frac{\binom{2n}{n}}{n+1} \]

其生成函数为

\[C^{\#}(z)=\frac{1-\sqrt{1-4z}}{2z}=\sum_{i\geq 0} C_i z^i \]

对其乘上一个 \(z\) 后再微分,实际上就是对每个 \(C_i\) 乘上一个 \(i+1\),得到 \(\binom{2i}{i}\)

\[\sum_{i\geq 0} \binom{2i}{i} z^i=\frac{d(zC^{\#}(z))}{dz}=\frac{1}{\sqrt{1-4z}} \]

那么

\[G(z)=\frac{e^{-2z}}{\sqrt{1-4z}} \]

对其微分

\[G'(z)=\frac{8ze^{-2z}}{(1-4z)^{\frac{3}{2}}}=\frac{8z}{1-4z}\frac{e^{-2z}}{\sqrt{1-4z}}=\frac{8zG(z)}{1-4z} \]

\[G'(z)=8zG(z)+4zG'(z) \]

展开为幂级数

\[\sum_{i\geq 0} ig(i)z^{i-1}=8\sum_{i\geq 0}g(i)z^{i+1}+4\sum_{i\geq 0} ig(i) z^i \]

统一幂次(注意到左边当 \(i=0\) 时,式子为 \(0\)

\[\sum_{i\geq 0} (i+1)g(i+1)z^i=\sum_{i\geq 1}8g(i-1)z^i+\sum_{i\geq 0} 4ig(i) z^i \]

至此,我们得到了递推式

\[g(n)=\frac{4(n-1)}{n}g(n-1)+\frac{8}{n}g(n-2) \quad (n\geq 2) \]

以及 \(g(0)=1\)\(g(1)=0\),复杂度 \(O(n+T)\)

posted @ 2021-01-22 19:18  Kreap  阅读(69)  评论(0编辑  收藏  举报