斯特林子集數/第二類斯特林數
從把n個不同的小球放到k個相同的盒子裡,且每個盒子至少要有乙個小球的選法。
快速計算一行斯特林數:
使用這個式子
\[ = \frac \sum\limits_^m (-1)^i \binom (m-i)^n
\]把上式變形
\[ = \frac \sum\limits_^m (-1)^i \frac (m-i)^n \\
=\sum\limits_^m \frac \frac
\]是乙個卷積的形式
設\[a(x)=\sum\limits_^m \frac x^i\\
b(x)=\sum\limits_^m \frac x^i
\]那麼
\[ = [x^m]a(x)b(x)
\]
vectora, b;
a.clear(), b.clear();
a.eb(1), b.eb(0);
for(int i = 1, fac = 1; i <= n; ++i)
fntt::convolution(a, b);
a.resize(n + 1);
把n個元素分為k個非空子集的選法。
斯特林輪換數/第一類斯特林數
從把n個不同的小球放到k個相同的轉盤上,且每個轉盤至少要有乙個小球,轉盤在旋轉直接相同視為同一種方案的選法。
把n個元素分為k個非空輪換的選法。
快速計算一行斯特林輪換數:
設生成函式 \(e_n(x)=\sum\limits_^n x^i\) ,同時可以寫作 \(e_n(x)=\prod\limits_^ (x+i)\)
這個式子直接分治fntt o(nlog^2n)
for(int i = 1; i <= n; ++i)
dcfntt(1, n);
pr(vec[1]);
(常數問題自己想辦法解決)。
\(o(n\log n)\) 做法
\(e_n(x)=\prod\limits_^ (x+i-1)\)
當n為奇數時: \(e_n(x)=\prod\limits_^ (x+i-1)=(x+n-1)e_(x)\)
當n為偶數時: \(e_n(x)=\prod\limits_^} (x+i-1)\prod\limits_+1}^(x+i-1)=\prod\limits_^} (x+i-1)\prod\limits_^} (x+i-1+\frac)=e_}(x)e_}(x+\frac)\)
問題轉化為,已知形式冪級數 \(f(x)=\sum\limits_^n a_ix^i\) ,求 \(g(x)=f(x+c)\) 。
\[g(x)=f(x+c)=\sum\limits_^n a_i(x+c)^i=\sum\limits_^n \sum\limits_^i a_i\binomx^jc^
\]\[g(x)=\sum\limits_^n \sum\limits_^n a_i\binomx^jc^
\]\[g(x)=\sum\limits_^n \frac \sum\limits_^n i!\cdot a_i\frac}
\]\[g(x)=\sum\limits_^n \frac \sum\limits_^n j!\cdot a_j\frac}
\]設 \(a(i)=i!\cdot a_i,b(i)=\frac}\)
\[g(x)=\sum\limits_^n \frac \sum\limits_^n a(j)b(j-i)
\]\[g(x)=\sum\limits_^n \frac \sum\limits_^ a(i+j)b(j)
\]發現a和b中,j都是+1次,那麼翻轉其中一邊就變成卷積。記 \(a(i+j)=a(n-i-j)\)
\[g(x)=\sum\limits_^n \frac \sum\limits_^ a'(n-i-j)b(j)
\]設 \(c(i)=\sum\limits_^ a'(i-j)b(j)\) ,這個就是乙個卷積。
\(g(x)=\sum\limits_^n \frac c(n-i)\) 再卷積一次。
vectorcalc(int n)
if(n % 2 == 1) else
reverse(a.begin(), a.end());
fntt::convolution(a, b);
for(int i = 0; i <= m; ++i)
g[i] = 1ll * invfac[i] * a[m - i] % mod;
fntt::convolution(f, g);
f.resize(n + 1);
return f;
}}
尤拉數
把n個元素排成乙個序列,相鄰兩個標上符號,總共n-1個符號,恰好有k個小於號的選法。
斯特林數 斯特林反演
第一類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個不同的元素構成m個圓排列 迴圈排列 的方法數 分成兩種情況 1 前n 1個元素已經構成了m個圓排列,只要將第n個元素插入1 n 1個元素中任意乙個元素的左邊即可 n 1 s n 1,m 2 前n 1個元素已經構成了m 1個圓排列,...
斯特林數(Stirling)
第一類斯特林數表示的是將n個不同元素分成k個不同的環的方案數。兩個環不相同當且僅當這兩個環不能通過旋轉得到。記作s n,k 遞推關係的說明 1.考慮第n個物品,n可以單獨構成乙個非空迴圈排列,這樣前n 1種物品構成k 1個非空迴圈排列,方法數為s n 1,k 1 2.也可以前n 1種物品構成k個非空...