P5395 模板 第二類斯特林數 行

2022-03-30 07:42:43 字數 1415 閱讀 3460

多項式乘法練習題

p5395 【模板】第二類斯特林數·行

我們設 \(s_=\begin

n\\

m\end\) 。

考慮第二類斯特林數的通項式:

\[s_=\sum_^m (-1)^ic_^i\frac\\

=\sum_^m (-1)^i\frac\frac\\

=\sum_^m \frac\cdot \frac

\]可以發現這是乙個卷積的形式。

我們設 \(\hat=\sum_^\fracx^i,\hat=\sum_^\fracx_i,\hat=\sum_^s_i\cdot x_i\) 。

我們有 \(\hat=\hat\cdot \hat\) ,直接上 \(ntt\) 即可。

考慮怎麼證明通項式。

由定義可知 \(s_\) 表示 \(n\) 個數恰好分入 \(m\) 個集合的方案數。

考慮容斥。

我們列舉 \(i\) 表示有 \(i\) 個集合一定不選,方案數為 \(c_m^i\) ,其他的任意放入剩下的 \(m-i\) 個集合中,方案數為 \((m-i)^n\) ,由於集合是不區分的,所以還要除以 \(m!\) 。

加上容斥係數,我們即可得到上方的通項式。

#include#define del(a,i) memset(a,i,sizeof(a))

#define ll long long

#define inl inline

#define il inl void

#define it inl int

#define ill inl ll

#define re register

#define ri re int

#define rl re ll

#define mid ((l+r)>>1)

#define lowbit(x) (x&(-x))

#define inf 0x3f3f3f3f

using namespace std;

templateil read(t &x)

templateil _print(t x)

templateil print(t x)

ll mul(ll a,ll b,ll mod)

it qpow(int x,int m,int mod)

return res;

}const int maxn = 8e5+5,mod = 167772161,g = 3,ig = 55924054;

int n,lim=1,len,rev[maxn],a[maxn],b[maxn],inv[maxn],ifac[maxn];

it add(int x,int y)

it mul(int x,int y)

il ntt(int *a,int ty)

Luogu5395 模板 第二類斯特林數 行

problem 一句話題意 求 n beginn i end 根據第二類斯特林數的展開式,有 beginn k end frac sum k 1 i begink i end k i n 具體證明可以看這裡 進一步整理,式子化為 beginn k end sum k frac times frac ...

模板 第二類斯特林數 列

從通項公式入手好像不行了。法一 直接從定義入手 把n個球劃分成m個等價類 假設等價類兩兩不同,最後除以m!直接上egf,a 1 i x i a m的i次項係數,再乘上i!再除以m!法二 從遞推公式入手 s n,m s n 1,m 1 m s n 1,m 設ogf s m x 是第m列二斯的ogf,則...

第二類斯特林數模板

第二類斯特林數s n m s n,m 表示的是把 n 個不同的小球放在 m 個相同的盒子裡方案數。遞推式子如下 初始化 s 0 0 1s n,m s n 1,m 1 ms n 1,m s n m s n 1,m 1 ms n 1,m const ll mod 1e9 7 ll s maxn maxn...