特殊计数序列——第一类斯特林(stirling)数

第一类斯特林数

在这里我因为懒所以还是用\(S(n,m)\)表示第一类斯特林数,但一定要和第二类斯特林数区分开来

递推式

\(S(n,m)=S(n-1.m-1)+S(n-1,m)*(n-1)\)

其中\(S(0,0)=1,S(i,0)=0(i>0)\)

组合意义

\(n\)个元素组成\(m\)个圆排列的方案数

注意这里圆排列指的是两个排列经过旋转能重合的算一种方案

那么递推式就可以这样理解:对于当前的第\(n\)个元素,单独成一个圆排列有\(S(n-1,m-1)\)种方案,放在其它的圆排列中有\(S(n-1,m)*(n-1)\)种方案,即放在每个元素的左侧(右侧等价于另一个元素的左侧)

性质

1、\(S(n,1)=(n-1)!\)

圆排列定义

2、\(\sum_{i=1}^{n}S(n,i)=n!\)

我们知道\(1-n\)这\(n\)个元素能形成\(n!\)个个排列,也就是\(n!\)个置换,而将置换写成循环的形式,这又对应着一个圆排列,于是就建立起了\(n\)排列和第一类斯特林数一一对应的关系

3、\(x^\underline{n}=\sum_{i=0}^nS(n.i)(-1)^{n-i}x^i\),\(x^\overline{n}=\sum_{i=0}^nS(n,i)x^i\)

证明的话考虑数学归纳法,这里仅给出第一条的证明
\[
\begin{aligned}
x^{\underline{n+1}}=&(x-n)x^{\underline{n}}\=&(x-n)\sum_{i=0}^nS(n,i)(-1)^{n-i}x^i\=&\sum_{i=0}^nS(n,i)(-1)^{n-i}x^{i+1}-n\sum_{i=0}^nS(n,i)(-1)^{n-i}x^i\=&\sum_{i=1}^{n+1}S(n,i-1)(-1)^{n-i+1}x^i+n\sum_{i=0}^nS(n.i)(-1)^{n-i+1}x^i\=&\sum_{i=0}^{n+1}(S(n,i-1)+nS(n.i))(-1)^{n-i+1}x^i\=&\sum_{i=0}^{n+1}S(n+1,i)(-1)^{n-i+1}x^i
\end{aligned}
\]

求解第一类斯特林数

最普通的方法就是\(O(n^2)\)的递推啦,考虑有没有更优的方法

我们先丢结论:
\[
S(n,m)=[x^m]\prod_{i=0}^{n-1}(x+i)
\]
计算右式的话可以使用分治+NTT在\(O(nlog^2n)\)的时间内解决,但是这么做的理由是什么?

设现在求的是\(S(n+1,m)\)我们记\(f_n(x)=\prod_{i=0}^{n-1}(x+1)\),然后把这个式子写成类似于递推的形式:
\[
f_{n+1}(x)=(x+n-1)f_n(x)=xf_n(x)+(n-1)f_n(x)
\]
第一项\(xf_n(x)\)就相当于\(S(n+1,m-1)\),第二项\((n-1)f_n(x)\)就相当于\(n*S(n,m)\),也就是说这个式子对应的递推式就是\(S(n+1,m)=S(n,m-1)+n*S(n,m)\),正确性也就显然了

原文地址:https://www.cnblogs.com/zhou2003/p/10780832.html

时间: 2024-11-08 23:42:29

特殊计数序列——第一类斯特林(stirling)数的相关文章

HDU4372-Count the Buildings(第一类Stirling数+组合计数)

Count the Buildings Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 528    Accepted Submission(s): 171 Problem Description There are N buildings standing in a straight line in the City, numbere

组合计数 && Stirling数

参考: http://blog.csdn.net/qwb492859377/article/details/50654627 http://blog.csdn.net/acdreamers/article/details/8521134 http://blog.csdn.net/sr_19930829/article/details/40888349 球,盒子都可以分成是否不能区分,和能区分,还能分成是否能有空箱子,所以一共是8种情况,我们现在来一一讨论. 1.球同,盒不同,无空箱 C(n-1,

HDU3625(SummerTrainingDay05-N 第一类斯特林数)

Examining the Rooms Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1661    Accepted Submission(s): 1015 Problem Description A murder happened in the hotel. As the best detective in the town, yo

hdu 3625 第一类斯特林数

题目链接:click here Examining the Rooms Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1146    Accepted Submission(s): 689 Problem Description A murder happened in the hotel. As the best detective

[组合数学] 第一类,第二类Stirling数,Bell数

一.第二类Stirling数 定理:第二类Stirling数S(p,k)计数的是把p元素集合划分到k个不可区分的盒子里且没有空盒子的划分个数. 证明:元素在拿些盒子并不重要,唯一重要的是各个盒子里装的是什么,而不管哪个盒子装了什么. 递推公式有:S(p,p)=1 (p>=0)         S(p,0)=0  (p>=1)         S(p,k)=k*S(p-1,k)+S(p-1,k-1)   (1<=k<=p-1) .考虑将前p个正整数,1,2,.....p的集合作为要被

hdu 4372 第一类stirling数的应用/。。。好题

1 /** 2 大意: 给定一系列楼房,都在一条水平线上,高度从1到n,从左侧看能看到f个, 从右侧看,能看到b个,问有多少种这样的序列.. 3 思路: 因为肯定能看到最高的,,那我们先假定最高的楼房位置确定,那么在其左边还有f-1个能看见,在其右边还有b-1个,能看见..所以可以这样将题目转化: 将除最高楼之外的n-1个楼,分成f-1+b-1 组,在最高楼左边f-1 组,在其右边b-1组,那么分成f-1+b-1 组 就是第一类Stirling数.s[n-1][f-1+b-1]..左边f-1 组

【2019雅礼集训】【第一类斯特林数】【NTT&amp;多项式】permutation

目录 题意 输入格式 输出格式 思路: 代码 题意 找有多少个长度为n的排列,使得从左往右数,有a个元素比之前的所有数字都大,从右往左数,有b个元素比之后的所有数字都大. n<=2*10^5,a,b<=n 输入格式 输入三个整数n,a,b. 输出格式 输出一个整数,表示答案. 思路: 这道题是真的神啊... 首先,根据官方题解的思路,首先有一个n^2的DP: 定义dp[i][j]表示一个长度为i的排列,从前往后数一共有j个数字大于所有排在它前面的数字. 首先有转移式: \[dp[i][j]=d

CF960G(第一类斯特林数)

设\(f(i,j)\)为\(i\)个数的序列,有\(j\)个前缀最大值的方案数 我们考虑每次添一个最小数,则有:\(f(i,j)=f(i-1,j)+(i-1)*f(i-1,j-1)\),显然这是第一类斯特林数 从而我们得到一个朴素的答案:\[Ans=\sum\limits_{i=1}^{n}f_{i,a-1}×f_{n-1-i,b-1}×C_{n-1}^i\] 理解:枚举\(i+1\)为最大值添的位置,则已经限制了前缀最大值个数及后缀最大值个数,然后再乘上前半部分所填的数 观察\(f_{i,a-

HDU 4372 Count the Buildings:第一类Stirling数

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4372 题意: 有n栋高楼横着排成一排,各自的高度为1到n的一个排列. 从左边看可以看到f栋楼,从右边看可以看到b栋楼,并且高的楼会挡住低的楼. 问你这些楼有多少种排列方法. 题解: 由于高的楼会挡住低的楼,所以这些楼首先会被划分成f+b-2个区域(除去中间最高的楼),并且左边有f-1个,右边有b-1个. 对于一个区域(假设在左边),这个区域由若干栋楼组成,并且最高的楼一定在最左边. 那么,由一个区域