s(n,m)表示把n個元素組合成m個圓排列的方案數(注意是圓排列,n個元素的圓排列方案數:n!/n=(n-1)!)
說幾個:
o(n^2)遞推式:
考慮最後乙個放在**。
第乙個式子有乙個不錯的證明():
考慮遞推式,畫成橫座標m縱座標n的圖,只能往上或者往右上走,邊權不同(1或者i(i是當前縱座標)
),乙個路徑的價值定義為邊權的乘積
求(0,0)到(m,n)的所有路徑的價值和。
顯然滿足o(n^2)遞推式
直接考慮,必然m次往右,n-m次往上,所以x(x+1)*...(x+n)中m次冪的係數就是s(n,m)的答案
這就類似於生成函式了
有利於我們尋找nlogn求s(n,*)的式子。
(也可以從dp(其實就是直接展開)轉移式子角度推出係數)
第二個式子,符號和m的奇偶性相關,所以用有符號斯特林數即可
用途:下降冪是因式分解之後的多項式,不利於變換,展開之後,可以方便交換求和號等等
例如:[bjoi2019]勘破神機
和一般的多項式求逆一樣,
f(n)->f(2*n)只要知道f(n+x)的每一項的值
帶入後二項式定理展開得到ntt式子。
例題:hdu 4372 count the buildings——第一類斯特林數
s(n,m)表示把n個不同元素放進m個相同盒子的方案數(m個集合)
還是考慮最後乙個放在**
第二類斯特林數(建成二斯)組合意義比較強大(畢竟沒有排列苛刻的限制嘛)
通項公式:
證明考慮容斥,列舉哪些個盒子一定不放球,其他愛放不放(venn圖)
或者反演:
本身通項公式就可以用ntt在o(mlogm)內求出s(n,1~m),
所以出現二斯的時候,可以考慮用通項公式換掉。
組合數可以組合意義處理,n次方,裡面還是m-k,考慮能否用ntt優化一下
例題:[heoi2016/tjoi2016]求和——第二類斯特林數
上面那個是拆掉斯特林數,
還有乙個重要的公式,可以放上斯特林數:
適用於n很大,而k比較小,斯特林數可以快速求出來。
而且,n^k乘方性質通常不夠優美,而組合數有豐富的組合意義,並且展開之後的形式也和ntt有些關係
甚至n^k前面還有一些階乘,可以嘗試消一消。
這樣n就直接放在了組合數的位置
考慮把組合數拆開消一消,,,把和n有關的列舉都乾掉。n放進指數或者底數等可以o(1)或者o(logn)求和的位置
cf932e team work——第二類斯特林數
什麼時候用通項公式,什麼時候把n^k代換呢?
1,考慮n^k和斯特林數哪個好求,或者都試一試
2.根據套路,給了n^k一定換成斯特林數,給了斯特林數換成通項公式。。、。。
比較實際的應用題:
hdu4625 jzptree——第二類斯特林數
其實推式子都可以模擬莫比烏斯反演
交換求和式,考慮貢獻
組合數學還可以考慮組合意義。數論也可以考慮數學意義。
交換求和式一般是把大的列舉放在內層,然後爭取再用考慮貢獻乾掉這個列舉。
學習筆記 斯特林數
組合意義 將 n 個有區別的小球放進 m 個無區別的盒子裡,且沒有空盒的方案數為第二類斯特林數,記為 s n,m 遞推式 s n,m m s n 1,m s n 1,m 1 組合意義證明 把乙個新的小球放進盒子裡,可以選擇放進 m 個盒子中的乙個,也可以放進乙個新的盒子中.計算公式 s n,m fr...
斯特林數 斯特林反演
第一類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 ...
二項式反演 斯特林數 斯特林反演 學習筆記
從錯排數講起,考慮乙個有n個元素的排列,若乙個排列中所有的元素都不在自己原來的位置上,那麼這樣的排列就稱為原排列的乙個錯排。用容斥來解決這個問題,不難發現錯排數即為g n i 1n 1 i ni n i 考慮二項式定理,1 1 n i 0n 1 i ni 0 上式當n 0時值為1,所以有 i 0n ...