第一类斯特林数
裸第一类斯特林数
注意到高的火柴后面挡住很多低的火柴。则高的火柴必须在这一块的最前方,低的火柴可以任意排列,构成一个圆排列。
从所有火柴中划分出k个圆排列,即为答案。
建筑师
注意到最高的建筑把所有建筑分为左右两部分。
一个高的建筑后面挡住许多矮的建筑,最高的建筑必须在最前方,矮的建筑可以任意排列。若这一块区域的建筑数量为 x x x,则可以任意排列的建筑数量为 ( x − 1 ) ! (x-1)! (x−1)!,即圆排列。
因此分配所有建筑构成 a + b − 2 a+b-2 a+b−2个圆排列,其中选出 a − 1 a-1 a−1个放到最高的建筑左边,剩下的放到右边。答案即为 [ n − 1 a + b − 2 ] ⋅ ( a + b − 2 a − 1 ) \begin{bmatrix} n-1\\ a+b-2 \end{bmatrix}\cdot \begin{pmatrix} a+b-2\\ a-1 \end{pmatrix} [n−1a+b−2]⋅(a+b−2a−1)
其他更复杂的同类问题往往需要快速求出斯特林数。
事实上注意到我们可以枚举最高的建筑前面有几个建筑,这样答案就是 ∑ i = 0 n − 1 [ i a − 1 ] [ n − i − 1 b − 1 ] ( n − 1 i ) \overset{n-1}{\underset {i=0}\sum}\begin{bmatrix} i\\ a-1 \end{bmatrix}\begin{bmatrix} n-i-1\\ b-1 \end{bmatrix}\begin{pmatrix} n-1\\ i \end{pmatrix} i=0∑n−1[ia−1][n−i−1b−1](n−1i)
因而有 [ n − 1 a + b − 2 ] ⋅ ( a + b − 2 a − 1 ) = ∑ i = 0 n − 1 [ i a − 1 ] [ n − i − 1 b − 1 ] ( n − 1 i ) \begin{bmatrix} n-1\\ a+b-2 \end{bmatrix}\cdot \begin{pmatrix} a+b-2\\ a-1 \end{pmatrix}=\overset{n-1}{\underset {i=0}\sum}\begin{bmatrix} i\\ a-1 \end{bmatrix}\begin{bmatrix} n-i-1\\ b-1 \end{bmatrix}\begin{pmatrix} n-1\\ i \end{pmatrix} [n−1a+b−2]⋅(a+b−2a−1)=i=0∑n−1[ia−1][n−i−1b−1](n−1i)