定义
首先它有两个概念——
1、考虑的是组合数概念(无符号的斯特林数)
S(n,m)表示把n个不同的球放入m个相同的盒子中,不允许有空盒的方案,而且注意,这个盒子很有意思,这些球只能放成一圈且如果顺序不同也视为不同方案。
2、考虑的是表现升阶函数和降阶函数的各项系数的概念(分为有无符号的斯特林数)
有符号斯特林数表示为Ss反之表示为Su
xn↓=x(x−1)(x−2)……(x−n+1)=∑k=0nSs(n,k)xk
xn↑=x(x+1)(x+2)……(x+n−1)=∑k=0nSu(n,k)xk
(注意,这个升阶函数可以表示为排列数Pxn)
至于如何理解上面两者概念之间的共性。
我有一个方法,不知道对不对。
由于考虑把升阶函数或降阶函数分解并且表达成为一个系数∗xk的形式。
所以就可以画出一个树状图然后去把x某个次方分门别类。
类似于这样——
把系数合并合并。
于是系数就很像是上面的第一个概念推出来的数了。
至于为什么像,我们可以看到下面的递推式子再来理解。
递推式
我们可以看到百度百科,写得很清楚。
于是我就不怎么严谨地口胡一下。
第一个概念——
我们现在有n个球,放入m个盒子中。
现在要多放入一个球,那么就会有两种情况——
1、我们独自在一个新盒子中放入这个球,于是就从S(n,m−1)推过来。
2、由于之前有很多种不同的方案,那么就把这个新的球放在原来任意一个球的左边。
就从n∗S(n,m)推过来。
S(n+1,m)=S(n,m−1)+n∗S(n,m)get√
第二个概念——
直接利用定义+归纳法得到递推式:
k=0∑n+1S(n+1,k)∗xk=xn+1↓=xn↓∗(x−n)=x∗k=0∑nS(n,k)∗xk−n∗k=0∑nS(n,k)∗xk
依次把xm在左右两边的系数提取出来得:
S(n+1,m)=S(n,m−1)−n∗S(n,m)
我们发现,这是在有符号的斯特林数中得到的,
故:Ss(n,m)=(−1)n+m∗Su(n,m)
有了递推式,然后干嘛?
三角形!!!
“pascal”三角形或杨辉三角形
这个东东也是看百度百科学会的(发现的)
下面这个三角形是根据第一个概念推的。
然后,我们考虑上述的无符号斯特林数。
我们惊奇地发现,这个与我们之前的树状图合并同类项后系数是神似的!!!
那么我们就找到了第一个概念与第二个概念之间的共性。
第二个概念——(可以变化一下)
表示在做树状图时,由于第n层可以使上一层某个数的系数变大或使指数+1.
那么在第n层,指数为m时,
这个可以由上一层指数为m-1的情况乘上一个x变成指数为m的情况。
也可以由上一层指数为m的情况乘上当前(x+n)的这个n得到答案。
也就是在类似于dp转移意义上解释了这个第二个概念,且与第一个概念基本相同。
这样再看这两个概念就感觉很亲近啦~
不必多废话,我们继续看到这个神奇的三角形。
由于我们得到了递推公式以及这个三角形的样子,可以得到各种性质——
自百度百科
其实前几项也并不是特别地有用。
而后面的几项看起来很有用,而我不会用。
举例运用
第一个是经典例题,这里不多讲述。
第二个则是求下面的式子:
i=1∑nik
这就是大名鼎鼎的自然数幂的和。
然后开始化式子。
根据定义:
Cnk=k!Pnk=k!∑i=0k(−1)i+k∗Ss(k,i)ni
把nk提出来:
Cnk∗k!=nk+∑i=0k−1(−1)i+k∗Ss(k,i)ni
nk=Cnk∗k!−∑i=0k−1(−1)i+k∗Ss(k,i)ni
然后把原来的式子换一下
∑j=1njk
套入上述结果,再推:
∑j=1n(Cjk∗k!−∑i=0k−1(−1)i+k∗Ss(k,i)ji)
去括号
∑j=1nCjk∗k!−∑j=1n∑i=0k−1(−1)i+k∗Ss(k,i)ji
至此,我们发现推不下去了,那么我们引入一个小小的结论:
∑i=0mCni=Cn+1m+1
证明?
Cn+1m+1=Cnm+Cnm+1
这个很好理解吧?就是分成两种情况,一种是在这个选第m+1个数,第二种是不选。
有了这个东东,带入原式,然后又会发现出现一样的结论,再带入,再看,就可以发现这个结论是对的!
那好,利用这个结论丢入原式。
Cn+1k+1∗k!−∑i=0k−1∑j=1n(−1)i+k∗Ss(k,i)ji
我们设一个函数f(n,k)=∑i=1nik
原式则为:
Cn+1k+1∗k!−∑i=0k−1(−1)i+k∗Ss(k,i)∗f(n,i)
然后,如果给你取模数,这个模数是质数,则这条式子已经够用了。
但是如果出题人丧心病狂地把这个模数变成任意数,怎么办?
不用方,只需把前面的组合数改一下即可——
k+1Pn+1k+1−∑i=0k−1(−1)i+k∗Ss(k,i)∗f(n,i)
然后这个P=(n+1)(n)(n−1)(n−2)……((n+1)−(k+1)+1)
然后这是连续的k+1个数,然后这连续的k+1个数中,必然存在一个是k+1的倍数的数。
所以就可以不用关心逆元了。
(听说这玩意可以用第一类斯特林数的同胞第二类斯特林数来求,管它呢!)
时间为O(k2∗(比较大的常数))
母函数?
我不费!
我还是太弱了,听大佬说可以利用这个东东求通项公式。