感觉有很多高大上的数,自己都不会,还是学一下吧。
1 第一类斯特林数
1.1 意义#
n 个元素组成 m 个环的方案数,元素不同,环不能为空。
1.2 记号#
[nm]
1.3 计算方法#
[nm]=(n−1)[n−1m]+[n−1m−1]
组合意义:
- 新的数可以放在之前长度为 x 的环里,有 x 种放法,由于所有环环长和为 n−1 所以有 n−1 种不增加环的方法。
- 新的数可以新开一个环。
1.4 性质#
1.4.1#
n∑i=1[ni]=n!
定义 nexti 为 i 顺时针的第一个珠子,显然 next 是一个排列。
不难发现左边的式子不重不漏地覆盖了所有 next 的排列。
1.4.2#
x¯¯¯n=n∑i=1[ni]xi
上面那个东西的加强版,可以使用数学归纳法简单证明。
1.4.3#
xn––=n∑i=1[ni](−1)n−ixi
由于 xn––=(−1)(−x)¯¯¯n 所以很好证明。
1.4.4#
∑i=k[ik]xii!=1k!(−ln(1−x))k
S1(x,y)=∑i=0∑j=0[ij]xiyji!=(1−x)−y
我们用组合意义解决顶上的东西。
n 个数放 1 个环的 EGF 是 −ln(1−x)。
n 个数放 k 个环,环有序的 EGF 是 (−ln(1−x))k。
然后因为环无序,直接除以 k! 就可以了。
2 第二类斯特林数
2.1 意义#
n 个元素组成 m 组的方案数,元素不同,组相同。
2.2 记号#
{nm}
2.3 计算方法#
{nm}=m{n−1m}+{n−1m−1}
组合意义和上面的差不多。
2.4 性质#
2.4.1#
mn=m∑i=1{ni}Aim
2.4.2#
mn=m∑i=1{ni}i!(mi)
F(x)=xn,G(x)={nx}x!
F(m)m∑i=0G(i)(mi)⟺G(m)=m∑i=0(−1)m−iF(i)(mi)
{nm}m!=m∑i=0(−1)m−iin(mi)
2.4.3#
∑i=k{ik}xii!=1k!(ex−1)k
S2(x,y)=∑i=0∑j=0{ij}xiyji!=exp(y(ex−1))
我们还是用组合意义解决顶上的东西。
n 个数放 1 个盒子的 EGF 是 ex−1。
n 个数放 k 个盒子,盒子有序的 EGF 是 (ex−1)k。
然后因为盒子无序,直接除以 k! 就可以了。
3 四个斯特林数板子
3.1 第二类斯特林数·行#
最简单的板子,我们直接上式子卷积即可。
{nm}=m∑i=0in1i!(−1)m−i1(m−i)!
3.2 第一类斯特林数·行#
x¯¯¯n=n∑i=1[ni]xi
于是我们要求 x¯¯¯n。
考虑倍增。显然从 x¯¯¯n 到 x¯¯¯¯¯¯¯¯¯¯n+1 很水,直接乘一个 (x+n) 就行。
所以我们考虑怎么从 x¯¯¯n 到 x¯¯¯¯¯¯2n。
x¯¯¯¯¯¯2n=x¯¯¯n(x+n)¯¯¯n
x¯¯¯n=n∑i=0fixi
(x+n)¯¯¯n=n∑i=0fi(x+n)i
=n∑i=0fii∑j=0(ij)xjni−j
=n∑i=0xin∑j=ij!i!(j−i)!nj−ifj
=n∑i=0xii!n∑j=ij!fjnj−i1(j−i)!
然后就可以卷了。
3.3 第二类斯特林数·列#
3.3.1 Solution 1#
我们推 OGF 可以得到
Fk(x)=∑i=k{ik}xi=∑i=k(k{i−1k}+{i−1k−1})xi
Fk(x)=x(kFk(x)+Fk−1(x))
Fk(x)=x1−xkFk−1(x)
∵F0(x)=1
∴Fk(x)=xk∏(1−ix)
OGF 分治计算时间复杂度 O(nlog2n)。
3.3.2 Solution 2#
见 2.4.3。
EGF 快速幂计算时间复杂度 O(nlogn)。
3.4 第一类斯特林数·列#
见 1.4.4。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律