[整理]多项式/生成函数题目泛刷

洛谷P5408 第一类斯特林数·行

众所周知,第一类斯特林数可用于普通幂和上升幂之间的转换:\(x^{\overline{n}}=\sum\limits_{i=0}^n\begin{bmatrix}n\\i\end{bmatrix}x^i\),也就是说我们需要快速求上升幂。
考虑倍增,有 \(x^{\overline{2n}}=x^{\overline{n}}(x+n)^{\overline{2n}}\),瓶颈在于后面的 \((x+n)^{\overline{2n}}\)
如何转化呢?其实就是把 \(x+n\) 复合到一个函数 \(f(x)\) 中,我们把组合数展开,再将差卷积化为和卷积。设 \(g(i)=i!a_i\)\(h(x)=\dfrac{n^i}{i!}\),再引入 \(g'\) 作为 \(g\) 反转指数的结果,那么易见

\[\begin{aligned} f(x+n)&=\sum_{j=0}^n\dfrac{x^j}{j!}\sum_{i=0}^{n-j}g(i+j)h(i)\\ &=\sum_{j=0}^n\dfrac{x^j}{j!}\sum_{i=0}^{n-j}g'(n-j-i)h(i)\\ \end{aligned} \]

上式平凡,略去代码。细节巨大多,请谨慎编写

洛谷P5395 第二类斯特林数·行

众所周知第二类斯特林数有通项 \(\begin{Bmatrix}n\\m\end{Bmatrix}=\sum\limits_{i=0}^m\dfrac{(-1)^{m-i}i^n}{i!(m-i)!}\),这个公式可以用二项式反演证明:考虑 \(n\) 个元素放到 \(m\) 个集合中的方案数 \(m^n\),它等价于选出若干个非空集合再放入元素,也就是 \(m^n=\sum\limits_{i=0}^mm^{\underline{i}}\begin{Bmatrix}n\\i\end{Bmatrix}=\sum\limits_{i=0}^mi!\dbinom mi\begin{Bmatrix}n\\i\end{Bmatrix}\)
二项式反演即得通项,证明留作练习。
这个通项显然是一个卷积式,于是此题易解。

洛谷P5409 第一类斯特林数·列

我们从生成函数的角度考虑,众所周知圆排列(即 \(k=1\) 的情况)的 EGF 是 \(\ln\dfrac1{1-x}\),所以 \(\begin{bmatrix}i\\k\end{bmatrix}\) 的 EGF 显然为 \(\dfrac{(\ln\frac1{1-x})^k}{k!}\),于是此题易解。

洛谷P5396 第二类斯特林数·列

同上一道题的处理方式,\(k=1\) 时的 EGF 就是 \(e^x-1\),所以 \(\begin{Bmatrix}i\\k\end{Bmatrix}\) 的 EGF 为 \(\dfrac{(e^x-1)^k}{k!}\)
注意此解为错解且可能被卡,但是正解看起来很麻烦作者懒得推,于是就先咕掉。

洛谷P2767 树的数量

开题一看是傻逼题,直接碾生成函数 \(F=x(1+F)^m\),那么它的复合逆 \(G\) 显然为 \(\dfrac{x}{(1+x)^m}\),于是拉反一下就有 \([x^n]F=\dfrac1n[x^{n-1}](1+x)^{nm}=\dfrac{\binom{nm}{n-1}}{n}\)

洛谷P4491 [HAOI2018]染色

看到恰好先容斥掉,设 \(t(k)\)\(k\) 种颜色出现了至少 \(s\) 次的方案数,\(f(k)\)\(k\) 种颜色出现了恰好 \(s\) 次的方案数,那么 \(t(k)=\sum\limits_{i=k}^n\dbinom ikf(i)\),二项式反演即得 \(f(k)=\sum\limits_{i=k}^n(-1)^{i-k}\dbinom ikt(i)\)。而 \(t(i)\) 是很好求的,它等于 \(\dbinom{n}{is}\dbinom mi\dfrac{(is)!}{(s!)^i}(m-i)^{n-is}\),组合意义是先钦定 \(is\) 个位置,选 \(i\) 种颜色,剩余颜色随便放。
运用 P5408 的套路,设 \(g(k)=\dfrac{(-1)^k}{k!},h(k)=k!t(k),h'(k)=h(n-k)\),那么方案数就是 \(\dfrac1{k!}\sum\limits_{i=0}^{n-k}g(i)h(n-k-i)\),暴力卷即可。

洛谷P5219 无聊的水题 I

题目中出现了树计数和点的度数,我们很自然地转化成 Prüfer 序列,题目也就是问 \(n\) 个数排成长 \(n-2\) 的序列,出现次数最多的恰好出现了 \(m-1\) 次的方案数。
还是套路地将恰好容斥掉,考虑计数出现至多 \(m-1\) 次的减去至多 \(m-2\) 次的。
写出每个元素的 EGF:\(F=\sum\limits_{i=0}^{m-1}\dfrac{x^i}{i!}\),那么答案就是 \([x^{n-2}]F^n\)

洛谷P4931 [MtOI2018]情侣?给我烧了!(加强版)

EI 为这题提供了一个极为巧妙的解法,整理如下(但是 EI 神仙的过程实在过于简洁,导致我卡了很长时间)
首先我们设 \(D_{k}\)\(k\) 对情侣都不在一排的方案数,恰好 \(k\) 对在一排的方案数就是 \(\dbinom nk^2k!2^kD_{n-k}\),组合意义是选 \(k\)\(k\) 对情侣排列后剩下的错排。
题目中提示了总方案数,那么显然有 \(\sum\limits_{k=0}^n\dbinom nk^2k!2^kD_{n-k}=(2n)!\)
组合数的平方是什么鬼?我们突然想到,由于 EGF 可以卷积出一个组合数,那么我弄一个跟 EGF 类似,只不过每一项带的是 \(\dfrac{1}{(i!)^2}\) 的东西就可以卷出来组合数平方了。
于是变成了 \(D(x)e^{2x}=\dfrac1{\sqrt{1-4x}}\)
稍微解释一下右边是怎么来的,EI 和很多人都把这里略了。现在我们要求 \(\sum\limits_i\dfrac{(2i)!}{(i!)^2}x^i=\sum\limits_i\dbinom{2i}ix^i\),由于 \(\dbinom{i-1/2}{i}=\dfrac{\binom{2i}i}{4^i}\)(容易计算得出),所以原式即为 \(\sum\limits_i\dbinom{i-1/2}{i}4^ix^i\),运用上指标反转有 \(\sum\limits_i(-1)^i\dbinom{-1/2}{i}4^ix^i=(1-4x)^{-1/2}\)(这个式子据说还挺重要?)。
求导有 \(D'(x)=\dfrac{8x}{1-4x}D(x)\),提取系数则有 \(D_n=4n(n-1)D_{n-1}+8n(n-1)^2D_{n-2}\),于是可以递推求解。

洛谷P4233 射命丸文的笔记

答案其实是哈路总数比上有哈路的图数。
竞赛图的哈路总数很好求:选 \(n-1\) 条边连成环,剩下的随便连,答案是 \((n-1)!2^{n(n-1)/2-n}\)
众所周知有哈路的充要条件是强连通(感性理解),我们需要统计强连通竞赛图的数量。
发现普通竞赛图的 EGF(设为 \(F\))很好求,考虑用强连通的(设为 \(G\))表示普通的。
由图论知识,一个竞赛图缩点后会变成一条链状的 DAG,边从前连到后。所以把普通竞赛图看成一排强连通竞赛图,有 \(F=\dfrac1{1-G}\),所以 \(G=1-\dfrac1F\)

洛谷P4091 [HEOI2016/TJOI2016]求和

傻逼推式子,没啥好说的。

\[\begin{aligned} \sum_{i=0}^n\sum_{j=0}^ij!2^j\begin{Bmatrix}i\\j\end{Bmatrix}&=\sum_{i=0}^n\sum_{j=0}^nj!2^j\begin{Bmatrix}i\\j\end{Bmatrix}\\ &=\sum_{i=0}^ni!2^i\sum_{j=0}^n\sum_{k=0}^i\dfrac{(-1)^{i-k}k^j}{k!(i-k)}\\ &=\sum_{i=0}^ni!2^i\sum_{k=0}^i\dfrac{(-1)^{i-k}}{k!(i-k)}\sum_{j=0}^nk^j \end{aligned} \]

卷积的形式水落石出。
不过这题有些奇特的边界条件,写的时候需要注意。
EI 对此给出了一个线性做法,有空补。咕咕咕

洛谷P5748 集合划分计数

如果你熟知 Bell 数的 EGF 是 \(e^{e^x-1}\) 那就做完了,这里主要简述一下推导过程,以帮助像我一样没看过/记不住的人。
Bell 数是将 \(n\) 个数分成若干集合的方案数,平凡地我们有分成一个集合的方案数的 EGF:\(e^x-1\),那么根据 \(\exp\) 的组合意义就有上式。

CF960G Bandit Blues

题目长得十分 dp,我们先写一个式子:\(f_{i,j}\) 表示放了 \(i\) 个数,有 \(j\) 个前缀最大值的方案数,枚举最小数的位置不难得到 \(f_{i,j}=f_{i-1,j-1}+(i-1)f_{i-1,j}\),对递推式敏感的人可能一眼就能看出它是第一类斯特林数。
而答案的计算也很简单:我们钦定全局最大值的位置,那么答案为 \(\sum\limits_{i=1}^{n-1}\begin{bmatrix}i\\a-1\end{bmatrix}\begin{bmatrix}n-i-1\\b-1\end{bmatrix}\dbinom{n-1}{i}\),之后按照第一类斯特林数·列的处理方式计算,或者再由组合意义推一步化为封闭形式 \(\begin{bmatrix}n-1\\a+b-2\end{bmatrix}\dbinom{a+b-2}{a-1}\)
双倍经验洛谷 P4609。

洛谷P2791 幼儿园篮球题

先写出式子:\(\dfrac{\sum_{i=0}^m\dbinom{m}{i}\dbinom{n-m}{k-i}i^L}{\dbinom{n}{k}}\),我们发现难点主要在分子,考虑如何快速计算。

\[\begin{aligned} &\sum_{i=0}^m\dbinom{m}{i}\dbinom{n-m}{k-i}i^L\\ =&\sum_{i=0}^m\dbinom{m}{i}\dbinom{n-m}{k-i}\sum_{j=0}^L\begin{Bmatrix}L\\j\end{Bmatrix}\dbinom{i}{j}j!\\ =&\sum_{j=0}^L\begin{Bmatrix}L\\j\end{Bmatrix}j!\sum_{i=0}^m\dbinom{m}{i}\dbinom{i}{j}\dbinom{n-m}{k-i}\\ =&\sum_{j=0}^L\begin{Bmatrix}L\\j\end{Bmatrix}\dbinom{m}{j}j!\sum_{i=0}^m\dbinom{n-m}{k-i}\dbinom{m-j}{i-j}\\ =&\sum_{j=0}^L\begin{Bmatrix}L\\j\end{Bmatrix}\dbinom{n-j}{k-j}\dbinom{m}{j}j!\\ \end{aligned} \]

预处理第二类斯特林数就可以 \(O(L)\) 做了。

posted @ 2021-06-10 11:16  ajthreac  阅读(147)  评论(0编辑  收藏  举报