斯特林數和貝爾數

2022-09-04 14:30:18 字數 1676 閱讀 9409

版權說明:抄寫了hypoc的部落格

符號: \(\beginn\\m\end\) 或 \(s(n,m)\)

意義: \(n\) 個不同球穿成 \(m\) 條項鍊的方案數。

第 \(n\) 個球接在前面 \(n-1\) 個小球中某乙個的後面或新開一條項鍊。

遞推式:

\[s(n,m)=(n-1)s(n-1,m)+s(n-1,m-1)

\]複雜度 \(o(nm)\)

考慮生成函式優化。

第 \(i\) 次選擇時,有 \(i-1\) 中選擇不創造新的項鍊,\(1\) 種選擇創造新項鍊。寫成生成函式就是

\[\prod_^ (x+i)

\]使用分治來解決,每層再用 \(fft\) 將左右兩邊的多項式相乘, \(x^m\) 的係數是 \(s(n,m)\) 。時間複雜度 \(o(n\log^2 n)\) 。

有些題存在 \(o(n\log n )\) 做法。

符號: \(\beginn\\m\end\) 或 \(s(n,m)\)

意義: \(n\) 個不同小球放入 \(m\) 個相同盒子的方案數。

要麼和前面的放乙個盒子裡要麼新開乙個。

\[s(n,m)=ms(n-1,m)+s(n-1,m-1)

\]時間複雜度 \(o(nm)\)

生成函式無法加速了。考慮容斥加速。

不妨先假設每個盒子都不一樣,最後再除以 \(m!\) 。

容斥需要計算不合理方案。空盒子即不合理。

\[\begin

s(n,m)&=\frac \sum_^m (-1)^i (m-i)^n\\

&=\frac \sum_^m (-1)^i \frac (m-i)^n\\

&=\sum_^m \frac \times \frac

\end

\]時間複雜度 \(o(n\log n)\)

據說是 \(fft\) 搞一搞。

考慮 \(x^n\) 的組合意義, \(n\) 個不同的球放入 \(x\) 個不同的盒子的方案數。

列舉有多少非空的盒子:

\[x^n=\sum_^x s(n,i) i!=\sum_^x s(n,i) x^

\]第一類斯特林數的生成函式是上公升冪,即:

\[\sum_^n s(n,i) x^i=\prod_^ (x+i)=x^

\]如果將 \((x+i)\) 替換為 \((x-i)\) 那麼就會求出下降冪。

\[x^ =\sum_^n (-1)^ s(n,i)x^i

\]\(n\) 個不同小球放在若干個相同的盒子裡,問方案數。

\[b_n=\sum_^n s(n,i)

\]遞推公式:

列舉 \(i\) 表示 \(n-i\) 個球和 \(n+1\) 個球在同乙個盒子裡,剩下的 \(i\) 個又有 \(b_i\) 種。選球花 \(n\choose i\)

\[b_=\sum_^n b_i

\]快速求 \(b_i\) :

\[\begin

b_n&=\sum_^n s(n,i)\\

&=\sum_^n \sum_^i \frac \times \frac \\

&=\sum_^i \frac \times \sum_^n \frac \\

\end

\]\(o(n\log n)\) 處理 \(\frac \) 字尾和,\(o(n)\) 求出 \(b_n\) 即可。

HDU 2512 (斯特林數,貝爾數)

題目意思 給你n個數,讓你組成從1 n個不重集合的組合數目是多少?題解思路 知識點 組合數學中的第二斯特林數,貝爾數 注意,在這道題裡,i要從1開始,接下只要先求s2 0,0 s2 2000,2000 之後逐次累加到bell n 即可 include define register int rint...

組合數學之斯特林數 貝爾數

斯特林數經常和組合數學中的上公升下降問題聯絡到一起。第一類斯特林數 將n個不同的元素構成m個不同的環的方案數目 兩環不想等當且僅當任一不能通過旋轉得到另一環 dp i j 表示i個元素構成j個環 有兩種情況可以得到dp i j 1.前i 1個元素構成了j 1個不同的環,第i個元素單獨成環 共有 dp...

第一 二類斯特林數,貝爾數

s1 n m 表示把n個元素劃分成m個非空迴圈排列集合的方案數 void getstirling s2 n m 表示把n個元素劃分成m個非空集合的方案數 void getsstirling 簡單闡述一下為什麼不用給s2 i i 賦值為1 i 1,j 1時 s2 1 1 1 這是由s2 i 1 1得到...