多项式与组合数学进阶
多项式进阶与组合数学
Stirling 数
第一类 Stirling 数
记为 \(\displaystyle {n\brack k}\),表示将 \(n\) 个元素划分成 \(k\) 个无序环的方案数(不能有空环)。
边界为 \(\displaystyle {n\brack 0}=[n=0]\)。
递推式:
第二类 Stirling 数
记为 \(\displaystyle {n\brace k}\),表示将 \(n\) 个元素划分给 \(k\) 个无序集合的方案数。换句话说,\(n\) 个有标号球放到 \(k\) 个无标号桶里的方案数(不能为空)。
边界为 \(\displaystyle {n\brace 0}=[n=0]\)。
递推式:
两类 Stirling 数与下降幂、方幂的关系:
P5408 第一类斯特林数·行
求出同一行的第一类 Stirling 数。换句话说,给定 \(n\),求
我们知道
那么我们只要求出 \(x^{\overline{n}}\) 即可。考虑倍增。
假设我们求出了 \(x^{\overline{n}}\),现在要求 \(x^{\overline{2n}}\)。
我们有
亦即
也就是说,我们知道了一个多项式 \(f\),我们要求 \(f(x+c)\)。
显然
右边看起来是关于 \(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_{n+i}=[x^i]x^if(x+c)\)。
第一类斯特林数·列
P5395 第二类斯特林数·行
求出同一行的第二类 Stirling 数。换句话说,给定 \(n\),求
解法 1
我们知道
令 \(g(m)=m^n\),\(f(k)={n\brace k}k!\)。进行二项式反演,我们得到
记录一个困扰了我很久的小问题:为什么我们熟知的形式是
\[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\)。所以这个也是对的。
希望能对你有所帮助。
然后将右边展开
令 \(f_i=\dfrac{i^n}{i!}\),\(g_i=\dfrac{(-1)^i}{i!}\),暴力卷起来即可。时间复杂度 \(\Theta(n\log n)\)。
解法 2
我们有
于是可以想到将 \(x^n\) 化为下降幂多项式。于是求出 \(x^n\) 在 \(x\in [0,n]\) 的点值,然后转下降幂多项式即可。时间复杂度 \(\Theta(n\log n)\)。
第二类斯特林数·列
CF932E Team Work
求
$ 1 \leq k \leq 5000,1 \leq n \leq 10^9 $。
直接推式子。
由于 \(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\)。
不难 \(\Theta(k^2)\) 地递推出所有的 \({k\brace p}\),然后直接求式子。总时间复杂度 \(\Theta(k^2)\),瓶颈在于求 Stirling 数,可以利用 NTT 优化到 \(\Theta(k\log k)\)。
Nacly_Fish 提供了严格线性做法。省选完之后再去学习。
P4091 [HEOI2016/TJOI2016] 求和
求
对 \(998,422,353\) 取模。\(n\leq 10^5\)。
暴力推式子。记 \(f(k)=\sum_{i=0}^n k^i\)
发现是一个非常显然的卷积形式,所以我们可以利用 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\),
求
模 \(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}\)。
考虑后面两列的砖块跨越最后两列的情况。枚举一下最左边跨越的列数,我们得到
(乘以 \(2\) 是因为垂直翻转会得到不同的方案)
于是
所以
即
我们得到
而对于 \(f\),我们有
接下来考虑组合数。差分是简单的,于是我们只需要求
一定可以把 \(f_i\) 和 \(g_i\) 写成 \(c_1\cdot r_1^n+c_2\cdot r_2^n\) 的形式。于是
观察到 \(\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\) 我们有
即 \(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
答案显然为
将 \(l\) 和 \(r\) 总体加上 \(2\),利用差分,问题转化为
设 \(f_n=ax^n+by^n\)。代入 \(\displaystyle x^{\underline{k}}=\sum_{i=0}^k {k\brack i}(-1)^{k-i} x^i\),得到
注意到最后一个求和是等比数列的求和。\(\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\) 个无序自然数的方案数。
朴素地我们有如下转移:
考虑优化。我们设 \(f_j(x)\) 为 \(p_{i,j}\) 的 OGF。
则
即
我们得到了
于是我们得到
考虑怎么快速求。不难发现和经典例题 P4389 付公主的背包 本质相同。
具体地说,套路地取 \(\ln\),得到
然后根据 Taylor 级数的结论,得到
其中 \(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。
也就是
IV:球之间互不相同,盒子全部相同
枚举装球的盒子数量。那么就是
V:球之间互不相同,盒子全部相同,每个盒子至多装一个球
不难发现是 \([n\le m]\)。
VI:球之间互不相同,盒子全部相同,每个盒子至少装一个球
显然为
VII:球全部相同,盒子之间互不相同
考虑借 \(m\) 个球来,在 \(n+m-1\) 个空里插板。
也就是
VIII:球全部相同,盒子之间互不相同,每个盒子至多装一个球
显然为
IX:球全部相同,盒子之间互不相同,每个盒子至少装一个球
套路地每个盒子先放一个球,于是就有
X:球全部相同,盒子全部相同
即 \(p_{n,m}\)。
XI:球全部相同,盒子全部相同,每个盒子至多装一个球
即 \([n\leq m]\)。
XII:球全部相同,盒子全部相同,每个盒子至少装一个球
套路地每个盒子放一个球,得到
P6613 一阶微分方程
求出 \(F\),满足
且 \(F(0)=1\)。