多项式与组合数学进阶

多项式进阶与组合数学

Stirling 数

第一类 Stirling 数

记为 \(\displaystyle {n\brack k}\),表示将 \(n\) 个元素划分成 \(k\) 个无序环的方案数(不能有空环)。

边界为 \(\displaystyle {n\brack 0}=[n=0]\)

递推式:

\[{n\brack k}={n-1\brack k-1}+(n-1){n-1\brack k} \]

第二类 Stirling 数

记为 \(\displaystyle {n\brace k}\),表示将 \(n\) 个元素划分给 \(k\) 个无序集合的方案数。换句话说,\(n\) 个有标号球放到 \(k\) 个无标号桶里的方案数(不能为空)。

边界为 \(\displaystyle {n\brace 0}=[n=0]\)

递推式:

\[{n\brace k}=\underset{\text{第 } n \text{ 个球单独放在一个桶里}}{{n-1 \brace k-1}}+\underset{\text{第 }n \text{ 个球选择一个桶来放}}{k{n-1\brace k}} \]

两类 Stirling 数与下降幂、方幂的关系:

\[x^n=\sum_{k=0}^n {n\brace k}x^{\underline{k}} \]

\[x^{\underline{n}}=\sum_{k=0}^n (-1)^{n-k}\textcolor{cyan}{n\brack k}x^k \]

\[x^n=\sum_{k=0}^n {n\brack k}x^{\overline{k}} \]

\[x^{\overline{n}}=\sum_{k=0}^n (-1)^{n-k}\textcolor{cyan}{n\brace k}x^k \]

P5408 第一类斯特林数·行

求出同一行的第一类 Stirling 数。换句话说,给定 \(n\),求

\[{n\brack 0},{n\brack 1},\cdots,{n\brack n} \]

我们知道

\[x^{\overline{n}}=\sum_{i=0}^n {n\brack i}x^{i} \]

那么我们只要求出 \(x^{\overline{n}}\) 即可。考虑倍增。

假设我们求出了 \(x^{\overline{n}}\),现在要求 \(x^{\overline{2n}}\)

我们有

\[x^{\overline{2n}}=\overbrace{x\cdot (x+1)\cdots (x+n-1)}^{x^{\overline{n}}}\cdot (x+n)(x+n+1)\cdots (x+2n-1) \]

亦即

\[x^{\overline{2n}}=x^{\overline{n}}(x+n)^{\overline{n}} \]

也就是说,我们知道了一个多项式 \(f\),我们要求 \(f(x+c)\)

显然

\[\begin{aligned} f(x+c)&=\sum_{k=0}^{n} a_k(x+c)^k \\ &=\sum_{k=0}^n a_k\sum_{i=0}^k {k\choose i} x^ic^{k-i} \\ &=\sum_{i=0}^n x^i \sum_{k=i}^n a_k{k\choose i} c^{k-i} \\ &=\sum_{i=0}^n i!\cdot x^i \sum_{k=i}^n a_k \frac{k!}{(k-i)!}c^{k-i} \\ &=\sum_{i=0}^n \frac{x^i}{i!} \sum_{k=i}^n \frac{c^{k-i}}{(k-i)!}\cdot k! a_k \end{aligned} \]

右边看起来是关于 \(k\) 的卷积形式。
我们不妨令

  • \(g=\sum \dfrac{c^{i}}{i!} x^{n-i}\),即 \(g_i=\dfrac{c^{n-i}}{(n-i)!} x^i\)

  • \(h=\sum i!a_i x^i\)

\(f=g\ast h\)。则

\[f_{i}=\sum _{k=0}^{i} h_{k}g_{i-k} \]

\[f_{n+i}=\sum _{k=0}^{n+i} k!a_kx^k \cdot \frac{c^{k-i}}{(k-i)!} x^{i-k} \]

于是 \(f_{n+i}=[x^i]x^if(x+c)\)

第一类斯特林数·列

P5395 第二类斯特林数·行

求出同一行的第二类 Stirling 数。换句话说,给定 \(n\),求

\[{n\brace 0},{n\brace 1},\cdots,{n\brace n} \]

解法 1

我们知道

\[m^n=\sum_{k=0}^{n}{n\brace k}m^{\underline{k}}=\sum_{k=0}^{\textcolor{cyan}{n}} {m\choose k}{n\brace k}k! \]

\(g(m)=m^n\)\(f(k)={n\brace k}k!\)。进行二项式反演,我们得到

\[m^n=\sum_{k=0}^{\textcolor{cyan}{m}} {m\choose k}{n\brace k}k!\iff m!{n\brace m}=\sum_{k=0}^m {m\choose k}(-1)^{m-k}k^n \]

记录一个困扰了我很久的小问题:为什么我们熟知的形式是

\[m^n=\sum_{k=0}^{\textcolor{red}{n}} {m\choose k}{n\brace k}k! \]

但是,反演中的形式却是

\[m^n=\sum_{k=0}^{\textcolor{red}{m}} {m\choose k}{n\brace k}k! \]

呢?

首先我们注意到 \({m\brace k}{n\choose k}\neq 0\) 当且仅当 \(k\leq n,m\)\(k\leq \min(n,m)\)

  • \(\min(n,m)=m\) 的时候,显然是对的;
  • \(\min(n,m)=n\) 的时候,显然对于 \(k\in (n,m]\) 的项,\({m\choose k}\) 均为 \(0\)。所以这个也是对的。

希望能对你有所帮助。

然后将右边展开

\[=\sum_{k=0}^m \frac{k^n}{k!} \cdot \frac{(-1)^{m-k}}{(m-k)!} \]

\(f_i=\dfrac{i^n}{i!}\)\(g_i=\dfrac{(-1)^i}{i!}\),暴力卷起来即可。时间复杂度 \(\Theta(n\log n)\)

解法 2

我们有

\[x^n=\sum_{k=0}^{n}{n\brace k}x^{\underline{k}} \]

于是可以想到将 \(x^n\) 化为下降幂多项式。于是求出 \(x^n\)\(x\in [0,n]\) 的点值,然后转下降幂多项式即可。时间复杂度 \(\Theta(n\log n)\)

第二类斯特林数·列

CF932E Team Work

\[\sum_{i=1}^n\binom n i \times i^k \]

$ 1 \leq k \leq 5000,1 \leq n \leq 10^9 $。

直接推式子。

\[\begin{aligned} \sum_{i=1}^n{n\choose i} i^k &= \sum_{i=1}^n{n\choose i} \sum_{p=0}^k {k\brace i} i^{\underline{p}} \\ &=\sum_{i=1}^n{n\choose i} \sum_{p=0}^k {k\brace p}{i\choose p}p! \\ &=\sum_{p=0}^k{k\brace p}p!\sum_{i=1}^n{n\choose i}{i\choose p} \\ &=\sum_{p=0}^k{k\brace p}{n\choose p}p!\sum_{i=1}^n{n-p\choose i-p} \end{aligned} \]

由于 \(p=0\) 的时候 \(k\brace p\) 一定为 \(0\),所以我们可以把 \(p\) 的下界变成 \(1\)

注意到 \({n-p\choose i-p}\) 有值当且仅当 \(0\le i-p\le n-p \iff p\leq i\leq n\),而且 \([p,n]\subseteq [1,n]\)。所以我们可以直接枚举 \(i-p\)

\[\begin{aligned} &=\sum_{p=1}^k{k\brace p}{n\choose p}p!\sum_{k=0}^{n-p}{n-p\choose k} \\ &=\sum_{p=1}^k{k\brace p}{n\choose p}p!\cdot 2^{n-p} \end{aligned} \]

不难 \(\Theta(k^2)\) 地递推出所有的 \({k\brace p}\),然后直接求式子。总时间复杂度 \(\Theta(k^2)\),瓶颈在于求 Stirling 数,可以利用 NTT 优化到 \(\Theta(k\log k)\)

Nacly_Fish 提供了严格线性做法。省选完之后再去学习。

P4091 [HEOI2016/TJOI2016] 求和

\[\sum_{i=0}^n\sum_{j=0}^i {i\brace j}\cdot 2^j\cdot j! \]

\(998,422,353\) 取模。\(n\leq 10^5\)

暴力推式子。记 \(f(k)=\sum_{i=0}^n k^i\)

\[\begin{aligned} \sum_{i=0}^n\sum_{j=0}^i{i\brace j} j!\cdot 2^j&=\sum_{i=0}^n\sum_{j=0}^i 2^j\sum_{k=0}^j{j\choose k}(-1)^{j-k}k^i \\ &=\sum_{j=0}^i 2^j\sum_{k=0}^j{j\choose k}(-1)^{j-k}f(k)\\ &=\sum_{j=0}^n 2^j j!\sum_{k=0}^j \frac{f(k)}{k!}\frac{(-1)^{j-k}}{(j-k)!} \end{aligned} \]

发现是一个非常显然的卷积形式,所以我们可以利用 NTT 在 \(\Theta(n\log n)\) 内解决本题。

EI 给出了线性做法。

P5320 [BJOI2019] 勘破神机

\(f_n\) 为用 \(1\times 2\) 的本质相同的砖块铺满 \(2\times n\) 的路面(砖块可以旋转)的方案数,\(g_n\) 为用 \(1\times 2\) 的本质相同的砖块铺满 \(3\times n\) 的路面(砖块可以旋转)的方案数。

给定 \(l,r,k\)

\[ans_2=\frac{1}{r-l+1}\sum_{n=l}^r {f_n\choose k} \]

\[ans_3=\frac{1}{r-l+1}\sum_{n=l}^r {g_n\choose k} \]

\(998,422,353\)

\(l\le r\le 6\times 10^{18}\)\(k\le 501\)

显然 \(f_i\) 是 Fibonacci 数列。实际上 \(f_i\) 是 Fibonacci 数列的第 \((i+1)\) 项,但是处理是方便的。

推导 \(g_i\)。显然 \(2\nmid i\) 的时候,\(g_i=0\),所以以下设 \(g_i\) 为行数为 \(2i\) 时的方案数。

我们显然有 \(g_1=3\)

考虑如何推导 \(g_n\)。当后面两列的砖块都只放在最后两列的时候,显然方案数为 \(g_1\times g_{n-1}=3g_{n-1}\)

考虑后面两列的砖块跨越最后两列的情况。枚举一下最左边跨越的列数,我们得到

\[g_n=3g_{n-1}+2\sum_{i=1}^{n-2} g_{n-i-1}=3g_{n-1}+2\sum_{i=1}^{n-2} g_i \]

(乘以 \(2\) 是因为垂直翻转会得到不同的方案)

于是

\[g_{n+1}=3g_n+2\sum_{i=1}^{n-1}g_i \]

所以

\[\Delta g_n=3(g_n-g_{n-1})+2g_{n-1}=3g_n-g_{n-1} \]

\[g_{n+1}=4g_{n}-g_{n-1} \]

我们得到

\[g_n=4g_{n-1}-g_{n-2} \]

而对于 \(f\),我们有

\[f_n=f_{n-1}+f_{n-2} \]

接下来考虑组合数。差分是简单的,于是我们只需要求

\[\begin{aligned} \sum_{i=1}^n {f_i\choose k}&=\frac{1}{k!}\sum_{i=1}^n f_i^{\underline{k}} \\ &=\frac{1}{k!}\sum_{i=1}^n \sum_{p=0}^k {k\brace p}(-1)^{k-p}f_i^p \\ &=\frac{1}{k!}\sum_{p=0}^k {k\brace p}(-1)^{k-p}\sum_{i=1}^n f_i^p \\ \end{aligned} \]

一定可以把 \(f_i\)\(g_i\) 写成 \(c_1\cdot r_1^n+c_2\cdot r_2^n\) 的形式。于是

\[\begin{aligned} &=\frac{1}{k!}\sum_{p=0}^k {k\brace p}(-1)^{k-p}\sum_{i=1}^n (c_1\cdot r_1^i+c_2\cdot r_2^i)^p \\ &=\frac{1}{k!}\sum_{p=0}^k {k\brace p}(-1)^{k-p}\sum_{i=1}^n\sum_{q=0}^p {p\choose q}(c_1\cdot r_1^i)^q(c_2\cdot r_2^i)^{p-q}\\ &=\frac{1}{k!}\sum_{p=0}^k {k\brace p}\sum_{q=0}^p{p\choose q}(-1)^{k-p}c_1^qc_2^{p-q}\sum_{i=1}^n \left(r_1^{q}r_2^{(p-q)}\right)^i \end{aligned} \]

观察到 \(\sum_{i=1}^n\) 是一个等比数列,是容易 \(\Theta(\log n)\) 计算的。\(\Theta(k^2)\) 预处理出第二类 Stirling 数后,即可 \(\Theta(k^2\log n)\) 得出结果。

对于 Fibonacci 数列,设 \(q\neq 0\)。设 \(f_i=q^i\),且 \(f_i\) 满足 \(f_{i}=f_{i-1}+f_{i-2}\),得到 \(q^2=q+1\),解得 \(q=\dfrac{1\pm \sqrt 5}{2}\) 满足条件。

\(q_1=\dfrac{1+\sqrt 5}{2}\)\(q_2=\dfrac{1-\sqrt 5}{2}\)。它们的线性组合同样满足递推关系,即 \(\forall \lambda,\mu \in \mathbb{R}\)\(f_i=\lambda q_1^i+\mu q_2^i\) 满足条件。代入解得 \(\lambda=\dfrac{1}{\sqrt 5}\)\(\mu=-\dfrac{1}{\sqrt 5}\)

所以 \(c_1=\dfrac{1}{\sqrt 5}\)\(c_2=-\dfrac{1}{\sqrt 5}\)\(r_1=\dfrac{1+\sqrt 5}{2}\)\(r_2=\dfrac{1-\sqrt 5}{2}\)。同理地,对于 \(g\) 我们有

\[g_i=\frac{3+\sqrt 3}{6}\left(2+\sqrt 3\right)^i+\frac{3-\sqrt 3}{6}\left(2-\sqrt 3\right)^i \]

\(c_1=\dfrac{3+\sqrt 3}{6}\)\(c_2=\dfrac{3-\sqrt 3}{6}\)\(r_1=2+\sqrt 3\)\(r_2=2-\sqrt 3\)

另外,\(\sqrt 3\) 或者 \(\sqrt 5\) 在模 \(998,422,353\) 下不一定存在,可以通过扩域的方式解决。

故我们在 \(\Theta(k^2+Tk^2\log V)\) 的时间复杂度内解决了本题。

CF717A Festival Organization

答案显然为

\[\sum_{i=l}^r {f_{i+2}\choose k} \]

\(l\)\(r\) 总体加上 \(2\),利用差分,问题转化为

\[\begin{aligned} \sum_{i=0}^n {f_i\choose k}&=\frac{1}{k!}\sum_{i=0}^n f_i^{\underline{k}} \end{aligned} \]

\(f_n=ax^n+by^n\)。代入 \(\displaystyle x^{\underline{k}}=\sum_{i=0}^k {k\brack i}(-1)^{k-i} x^i\),得到

\[\begin{aligned} k!\sum_{i=0}^n {f_i\choose k}&=\sum_{i=0}^n\sum_{j=0}^k{k\brack j} (-1)^{k-j}f_i^j \\ &=\sum_{j=0}^k{k\brack j}(-1)^{k-j}\sum_{i=0}^n f_i^j \\ &=\sum_{j=0}^k{k\brack j}(-1)^{k-j}\sum_{i=0}^n (ax^i+by^i)^j \\ &=\sum_{j=0}^k{k\brack j}(-1)^{k-j}\sum_{i=0}^n\sum_{p=0}^j{j\choose p}(ax^i)^p(by^i)^{j-p} \\ &=\sum_{j=0}^k{k\brack j}(-1)^{k-j}\sum_{i=0}^n\sum_{p=0}^j{j\choose p}(ax^i)^p(by^i)^{j-p} \\ &=\sum_{j=0}^k{k\brack j}(-1)^{k-j}\sum_{p=0}^j{j\choose p}a^{p}b^{j-p}\sum_{i=0}^n (x^py^{j-p})^i \end{aligned} \]

注意到最后一个求和是等比数列的求和。\(\Theta(k^2)\) 预处理出第一类 Stirling 数即可完成本题。

其中,\(a=\dfrac{1}{\sqrt 5}\)\(b=-\dfrac{1}{\sqrt 5}\)\(x=\dfrac{1+\sqrt 5}{2}\)\(y=\dfrac{1-\sqrt 5}{2}\)\(\sqrt 5\)\(\pmod {10^9+7}\) 意义下不存在,需要扩域。

划分数

\(p_{n,m}\) 为将自然数 \(n\) 划分成 \(m\)无序自然数的方案数。

朴素地我们有如下转移:

\[p_{i,j}=p_{i-j,j}+p_{i,j-1} \]

考虑优化。我们设 \(f_j(x)\)\(p_{i,j}\) 的 OGF。

\[[x^i]f_j(x)=[x^{i-j}]f_j(x)+[x^i]f_{j-1}(x) \]

\[f_j(x)=f_{j-1}(x)+x^jf_j(x) \]

我们得到了

\[f_j(x)=\frac{1}{1-x^j} f_{j-1}(x) \]

于是我们得到

\[f_j(x)=\prod_{i=1}^{j} \frac{1}{1-x^i} \]

考虑怎么快速求。不难发现和经典例题 P4389 付公主的背包 本质相同。

具体地说,套路地取 \(\ln\),得到

\[\sum_{i=1}^j \ln(1-x^i) \]

然后根据 Taylor 级数的结论,得到

\[\sum_{i=1}^j \sum_{k=1}^{\lfloor\frac{n}{i}\rfloor} \frac{x^{ki}}{k} \]

其中 \(n\) 为我们要求的最高次数。

P5824 十二重计数法

它 来 了。

\(n\) 个球放进 \(m\) 个盒子里,不考虑先后顺序,求满足以下条件的情况下的方案数。

\(\text{I}\):球之间互不相同,盒子之间互不相同。
\(\text{II}\):球之间互不相同,盒子之间互不相同,每个盒子至多装一个球。
\(\text{III}\):球之间互不相同,盒子之间互不相同,每个盒子至少装一个球。

\(\text{IV}\):球之间互不相同,盒子全部相同。
\(\text{V}\):球之间互不相同,盒子全部相同,每个盒子至多装一个球。
\(\text{VI}\):球之间互不相同,盒子全部相同,每个盒子至少装一个球。

\(\text{VII}\):球全部相同,盒子之间互不相同。
\(\text{VIII}\):球全部相同,盒子之间互不相同,每个盒子至多装一个球。
\(\text{IX}\):球全部相同,盒子之间互不相同,每个盒子至少装一个球。

\(\text{X}\):球全部相同,盒子全部相同。
\(\text{XI}\):球全部相同,盒子全部相同,每个盒子至多装一个球。
\(\text{XII}\):球全部相同,盒子全部相同,每个盒子至少装一个球。

\(n,m\le 2\times 10^5\)

I:球之间互不相同,盒子之间互不相同

显然为 \(m^n\)

II:球之间互不相同,盒子之间互不相同,每个盒子至多装一个球

显然为 \(m^{\underline{n}}\)。即每个球找一个新的盒子放进去。

III:球之间互不相同,盒子之间互不相同,每个盒子至少装一个球

枚举有多少个空盒子,容斥一下就是 I。

也就是

\[\sum_{i=0}^m (-1)^i {m\choose i}(m-i)^n \]

IV:球之间互不相同,盒子全部相同

枚举装球的盒子数量。那么就是

\[\sum_{i=1}^m {n\brace i} \]

V:球之间互不相同,盒子全部相同,每个盒子至多装一个球

不难发现是 \([n\le m]\)

VI:球之间互不相同,盒子全部相同,每个盒子至少装一个球

显然为

\[{n\brace m} \]

VII:球全部相同,盒子之间互不相同

考虑借 \(m\) 个球来,在 \(n+m-1\) 个空里插板。

也就是

\[{n+m-1\choose m-1}={n+m-1\choose n} \]

VIII:球全部相同,盒子之间互不相同,每个盒子至多装一个球

显然为

\[{m\choose n} \]

IX:球全部相同,盒子之间互不相同,每个盒子至少装一个球

套路地每个盒子先放一个球,于是就有

\[{n-1\choose m-1} \]

X:球全部相同,盒子全部相同

\(p_{n,m}\)

XI:球全部相同,盒子全部相同,每个盒子至多装一个球

\([n\leq m]\)

XII:球全部相同,盒子全部相同,每个盒子至少装一个球

套路地每个盒子放一个球,得到

\[p_{n-m,m} \]

P6613 一阶微分方程

求出 \(F\),满足

\[F'\equiv A\cdot \mathrm{e}^{F-1}+B \pmod {x^n} \]

\(F(0)=1\)

posted @ 2024-02-14 23:57  Starrykiller  阅读(98)  评论(0)    收藏  举报