Stiring數學習筆記
阿新 • • 發佈:2019-01-04
第一類
在此僅討論無符號第一類Stiring數。
定義
n個有標號的球組成m個圓排列的方案數,即第一類斯特林數,記做 ,亦記做 。
遞推式
考慮最後一個元素,可以新組成一個圓排列,也可以插入之前 個元素的任意一個之後,不難得到其遞推式為
更快速的求法
第n行的生成函式為
其中的第m項係數即為
為啥呢?我們不妨從遞推式進行思考,第n-1行到第n行,如果列數不增加,則要乘以當前的行數,如果列數增加1,就以1倍加入。
那麼我們用分治FFT就可以在 的複雜度求出某一行的值了。
然而其實還有更優秀的方法——倍增。
設 ,則有
那麼考慮倍增,我們希望能通過 ,快速的求出
不妨設
則
改變求和順序
把組合數一拆,卷積即可
時間複雜度為 ,常數略大,但相比分治FFT有較大優勢。
第二類
定義
n個有標號球放入m個無標號箱子,且每個箱子不為空的方案數,記做 ,亦記做 。
公式
同樣的,我們思考一下最後一個球新做一個箱子還是放入之前的箱子中去,不難得到:
我們也可以用容斥來做
至少有
個箱子為空的方案數
容斥一下,再把箱子改為無標號的即得