斯特林数-离散微积分学习笔记

本文深入探讨斯特林数的概念,包括第一类斯特林数和第二类斯特林数的定义、递推公式及快速求解方法。同时,文章介绍了斯特林数在组合数学中的应用,如自然数幂和的计算,以及斯特林反演原理。并通过具体实例,如Codeforces题目解析,展示了斯特林数在实际问题中的应用。

一、定义

1.第一类斯特林数:

表示方法:S1(n,m)或 [ n m ] n \brack m [mn]
组合意义:指n个点组成m个圆排列的方案数。
递推求法:S1(n,m)=S1(n-1,m-1)+(n-1)*S1(n-1,m)
快速求法:
∏ i = 0 n − 1 ( x + i ) \prod_{i=0}^{n-1}(x+i) i=0n1(x+i)
的第k次项系数就是S1(n,k),所以可用分治fft做到n*log^2或者再推下用倍增fft做到n*log

2.第二类斯特林数

表示方法:S2(n,m)或 \{ n m \} n \brace m { mn}
组合意义:指n个点划分成m个非空集合的方案数。
递推求法:S2(n,m)=S2(n-1,m-1)+m*S2(n-1,m)
快速求法:考虑枚举至少i个集合是空的,容斥所求的0个集合非空得:
S 2 ( n , m ) = 1 m ! ∑ i = 0 m ( − 1 ) i ∗ ( m i ) ∗ ( m − i ) n S2(n,m)=\frac{1}{m!}\sum_{i=0}^m(-1)^i*\binom m i*(m-i)^n S2(n,m)=m!1i=0m(1)i(im)(mi)n
其中之前乘的阶乘分之一是因为后面式子求出的是在盒子有标号(有序)情况下,这样才能变成无序集合。
显然搞一搞就是卷积形式可以直接fft来n*log求

二、应用

参考:(Orz)
https://www.cnblogs.com/acha/p/6444944.html
https://www.cnblogs.com/hchhch233/p/10016543.html
http://yyy.is-programmer.com/posts/202122.html
x k = ∑ i = 0 k ( x i ) ∗ \{ k i \} ∗ i ! = ∑ i = 0 k x i ‾ ∗ \{ k i \} x^k=\sum_{i=0}^{k}\binom x i*{k\brace i}*i!=\sum_{i=0}^{k}x^{\underline i}*{k\brace i} xk=i=0k(ix){ ik}i!=i=0kxi{ ik}
理解:x种颜色给k个点染色,直接考虑是等式左边,复杂地考虑用上k种颜色的方案数求和就是等式右边了。枚举到k是因为用的颜色数不会多于点数,而且推式子题目k也一般比x范围小。
x k ‾ = ∑ i = 0 k [ k i ] ∗ x i x^{\overline k}=\sum_{i=0}^{k}{k\brack i}*x^i xk=i=0k[ik]xi
理解:k个点组成圆排列,在为每个圆排列里的所有点染一种颜色。等式右边意义为暴枚组成了几个圆排列计算,左边意义为:考虑一个个加入点,对于当前点可以染x种颜色任意一种或者放到某个点左边并和这个点颜色相同,那么显然就是 x k ‾ x^{\overline k}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值