數學 斯特林子集數 斯特林輪換數 尤拉數

2022-05-11 05:45:12 字數 2385 閱讀 8909

斯特林子集數/第二類斯特林數

從把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個非空...