第二类斯特林数#
第二类斯特林数{nk}表示把n个不同元素划分成k个相同的集合中(不能有空集)的方案数。
递推式#
{nk}={n−1k−1}+k{n−1k}
考虑新加一个数放入一个单独的集合或放入k个已有数的集合即可。
{nk}=k∑i=0(−1)k−i∗in(k−i)!∗i!
证明考虑设fi表示把n个不同元素划分成i个的不同集合中(不能有空集)的方案数, gi表示可以有空集的方案数。
那么有
gi=in
gi=i∑j=0(ij)fj
二项式反演一下
fk=k∑j=0(−1)k−j(kj)gj
所以
{nk}=fkk!=1k!∗k∑j=0(−1)k−jk!(k−j)!j!jn=k∑i=0(−1)k−i∗in(k−i)!∗i!
有公式
nk=min(n,k)∑i=0{ki}(ni)i!
考虑组合意义,nk即为将k个不同的数放入n个不同的集合,那么枚举非空集数量i,因为集合不同所以要乘i!。
P5395 第二类斯特林数·行#
模板题,求同一行的斯特林数,对于通解的式子
{nk}=k∑i=0(−1)k−i∗in(k−i)!∗i!
显然是一个卷积的形式,NTT即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】