第一類stirling數\(s(n,m)\),也可記為\(\beginn\\m\end\)。
第一類stirling分為無符號第一類stirling數\(s_u(n,m)\)和帶符號第一類stirling數\(s_s(n,m)\)。
他們分別表現為其公升階函式和降階函式的各項係數,形式如下:
\[x^=x\cdot (x-1)\cdot (x-2)\cdots (x-n+1)=\sum_^ns_s(n,k)\cdot x^k\\
x^=x\cdot (x+1)\cdot (x+2)\cdots(x+n-1)=\sum_^ns_u(n,k)\cdot x^k
\]無符號stirling數更為常用,表示將\(n\)個不同元素構成\(m\)個圓排列的數目。
有無符號stirling之間有關係式\(s_s(n,m)=(-1)^\cdot s_u(n,m)\)。
設元素有編號\(1,2,...,n\),則將\(n\)個元素構成\(m\)個圓有兩種情況:
①把第\(n\)個元素單獨作為乙個圓,用前\(n-1\)個元素構成\(m-1\)個圓,方案數\(\beginn-1\\m-1\end\)。
②用前\(n-1\)個元素構成\(m\)個圓,把第\(n\)個元素插在前\((n-1)\)個元素任意乙個之前,方案數\((n-1)\cdot \beginn-1\\m\end\)。
綜上:\[\beginn\\m\end=\beginn-1\\m-1\end+(n-1)\cdot \beginn-1\\m\end
\]賦初值\(s(0,0)=1\)。
可以從其表示的降階函式歸納證明:
\[\sum_^s_s(n,k)\cdot x^k=x^=x^\cdot(x-(n-1))=\sum_^s_s(n-1,k)\cdot x^-(n-1)\cdot\sum_^s_s(n-1,k)\cdot x^k
\]依次把\(x^m\)的左右兩邊的係數提取出來得:
\[s_s(n,m)=s_s(n-1,m-1)-n\cdot s_s(n-1,m-1)
\]以求無符號第一類stirling數為例:
因為可以表示為公升階函式的各項係數,即:
\[x^=x\cdot (x+1)\cdot (x+2)\cdots(x+n-1)=\sum_^ns_u(n,k)\cdot x^k
\]我們可以用分治的思想,每次處理一半的多項式來ntt,時間複雜度\(o(n\log^2n)\)。
int rev[n];
void ntt(int *a,int x,int k)n\\m\end\) 。
第二類stirling數實際上是集合的乙個拆分,表示將n個不同的元素拆分成m個集合的方案數。
常常用於解決組合數學中幾類放球模型;
描述為:將n個不同的球放入m個無差別的盒子中,要求盒子非空,有幾種方案?
由容斥原理可以得到其通項公式:
\[\beginn\\m\end=\frac 1 \sum_^m(-1)^i\binom mi(m-i)^n
\]設元素有編號\(1,2,...,n\),則將\(n\)個元素構成\(m\)個集合有兩種情況:
①把第\(n\)個元素單獨作為乙個集合,用前\(n-1\)個元素構成\(m-1\)個集合,方案數\(\beginn-1\\m-1\end\)。
②用前\(n-1\)個元素構成\(m\)個集合,把第\(n\)個元素插入任意乙個集合之中,方案數\(m\cdot \beginn-1\\m\end\)。
綜上:\[\beginn\\m\end=\beginn-1\\m-1\end+m\cdot \beginn-1\\m\end
\]賦初值:\(s(0,0)=1\)。
\[\sum_^ns(n,i)s(i,m)=\sum_^ns(n,i)s(i,m)
\]對原式二項式反演可得
\[m^n=\sum_^m\binom mi\beginn\\i\endi!=\sum_^m\beginn\\i\endm^
\]等價於
\[m^n=\sum_^n\binom mi\beginn\\i\endi!=\sum_^n\beginn\\i\endm^
\]可以用於計算其他式子。
比如:\[\begin
&\sum_^ni^k=\sum_^k\begink\\i\endi!\binom\\
&\sum_^ni^k\binom ni=\sum_^k\begink\\i\endi!\binom ni2^
\end
\]例題
【tjoi2018】教科書般的褻瀆
codeforces 932e team work
將通項公式再化一下:
\[\beginn\\m\end=\sum_^m\frac\cdot\frac
\]這是乙個形如\(\sum_^mf(i)*g(m-i)\)的卷積的形式,可以用fft快速計算。
第乙個多項式的第\(i\)項係數為\(\frac \);第二個多項式的第\(i\)項係數為\(\frac \)。
兩式相乘,第\(i\)項的係數即為\(s(n,i)\)。
例題【bzoj5093】圖的價值
【tjoi/heoi2016】求和
\[\displaystyle f(n)=\sum_^n \beginn\\k \endg(k)
\iff g(n)=\sum_^n(-1)^\begin n\\k \endf(k)
\]首先,我們需要考慮如何建立上公升階乘冪與下降階乘冪之間的關係。
結論:\[x^=(-1)^n(-x)^\\
x^=(-1)^n(-x)^
\]證明:
\[\begin
(-1)^n(-x)^&=(-1)^n(-x)(-x+1)\cdots(-x+n-1)\\
&=(-1)^n(-x)(-(x-1))\cdots(-(x-n+1))\\
&=x(x-1)\cdots(x-n+1)\\
&=x^
\end
\]同理可證\(x^=(-1)^n(-x)^\)。
接下來,我們需要證乙個叫反轉公式的東西:
還是先給出結論:
\[\sum_^n(-1)^\beginn\\i\end\begini\\m\end=[m=n]\\
\sum_^n(-1)^\beginn\\i\end\begini\\m\end=[m=n]
\]證明:
\[\begin
n^m&=\sum_^m\beginm\\i\endn^\\
&=\sum_^m\beginm\\i\end(-1)^i(-n)^
\end
\]將\(x^=\sum\limits_^ns_u(n,k)\cdot x^k\)帶入:
\[\begin
n^m&=\sum_^m\beginm\\i\end(-1)^i\sum_^i\begini\\j\end(-n)^j\\
&=\sum_^mn^j\sum_^m\beginm\\i\end\begini\\j\end(-1)^
\end
\]即:
\[\sum_^m\beginm\\i\end\begini\\j\end(-1)^=[j=m]
\]這個與上面的式2等價,於是我們就證出了其中乙個反轉公式。
\[\begin
m^&=\sum_^n(-1)^\beginn\\i\endm^i\\
&=\sum_^n(-1)^\beginn\\i\end\sum_^i\begini\\j\endm^\\
&=\sum_^nm^\sum_^n(-1)^\beginn\\i\end\begini\\j\end
\end
\]即:
\[\sum_^n(-1)^\beginn\\i\end\begini\\j\end=[j=n]
\]由此證出了式1。
然後,我們就可以證明斯特林反演了:
若滿足\(g(n)=\sum\limits_^n(-1)^\beginn\\j\endf(j)\),則
\[\begin
f(n)&=\sum_^n[j=n]f(j)\\
&=\sum_^n\sum_^n\beginn\\k\end\begink\\j\end(-1)^f(j)\\
&=\sum_^n\beginn\\k\end\sum_^k(-1)^\begink\\j\endf(j)\\
&=\sum_^n\beginn\\k\endg(k)
\end
\]
Square(斯特林反演)
給出乙個 n m 大小的矩形,每個位置可以填上 1,c 中的任意乙個數,要求填好後任意兩行互不等價且任意兩列互不等價,兩行或兩列等價當且僅當對應位置完全相同,求方案數 n,m le 5000 這題是 wearry 出的神題,根本不會做。把題解搬過來了。首先我們有乙個很簡單的方式使得列之間互不等價,對...
知識點簡單總結 斯特林數 斯特林反演
第一類斯特林數 n 元置換分解為 k 個獨立輪換的方案數,即 begin n k end n 1 begin n 1 k end begin n 1 k 1 end.第二類斯特林數 n 個元素分成 k 個非空集合的方案數,即 begin n k end k begin n 1 k end begin...
二項式反演 斯特林數 斯特林反演 學習筆記
從錯排數講起,考慮乙個有n個元素的排列,若乙個排列中所有的元素都不在自己原來的位置上,那麼這樣的排列就稱為原排列的乙個錯排。用容斥來解決這個問題,不難發現錯排數即為g n i 1n 1 i ni n i 考慮二項式定理,1 1 n i 0n 1 i ni 0 上式當n 0時值為1,所以有 i 0n ...