版權說明:抄寫了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得到...