组合数学——二项式反演

组合数学——二项式反演

在处理组合数的时候,我们经常能够遇到形如:

f ( n ) = ∑ i = 0 n ( n i ) g ( i ) f(n) = \sum_{i=0}^n \binom{n}{i} g(i) f(n)=i=0n(in)g(i)

我们想反过来求 g ( n ) g(n) g(n) 考虑 f f f 的 EGF 为 F ( x ) F(x) F(x) g g g 的 EGF 为 G ( x ) G(x) G(x) 。并且 C ( x ) = ∑ n ≥ 0 x n n ! = e x C(x) = \sum_{n \ge 0} \frac{x^n}{n!} = e^x C(x)=n0n!xn=ex 那么:

F ( x ) = C ( x ) G ( x ) = e x G ( x ) F(x) = C(x)G(x) = e^xG(x) F(x)=C(x)G(x)=exG(x)

那么 G ( x ) = F ( x ) e − x G(x) = F(x) e^{-x} G(x)=F(x)ex ,再次展开得到:

g ( n ) = ∑ i = 0 n ( n i ) ( − 1 ) n − i f ( i ) g(n) = \sum_{i = 0}^n \binom{n}{i} (-1)^{n-i}f(i) g(n)=i=0n(in)(1)nif(i)

上述过程为二项式反演。

另外,二项式反演还有另外一种形式:

f ( n ) = ∑ i ≥ n ( i n ) g ( i ) ⇔ g ( n ) = ∑ i ≥ n ( i n ) f ( i ) ( − 1 ) i − n f(n) = \sum_{i \ge n} \binom{i}{n} g(i) \Leftrightarrow g(n) = \sum_{i \ge n} \binom{i}{n} f(i) (-1)^{i-n} f(n)=in(ni)g(i)g(n)=in(ni)f(i)(1)in

第二类斯特林数-行

P5395 第二类斯特林数·行

我们对于固定的 n n n ,求出 S ( n , m ) S(n,m) S(n,m)

考虑引理:

m n = ∑ i = 0 m { n i } × i ! × ( m i ) m^n=\displaystyle \sum _{i=0}^{m} \begin{Bmatrix}n\\i\end{Bmatrix} \times i! \times \begin{pmatrix}m\\i\end{pmatrix} mn=i=0m{ni}×i!×(mi)

左边是把 n n n 个物品随机放入 m m m 个箱子中,右边 i i i 是枚举非空箱子的个数,我们将 n n n 个物品分成 i i i 个集合塞到 i i i 个非空的箱子中。

m n + 1 = ∑ i = 0 m { n i } × i ! × ( m i ) m^n + 1=\displaystyle \sum _{i=0}^{m} \begin{Bmatrix}n\\i\end{Bmatrix} \times i! \times \begin{pmatrix}m\\i\end{pmatrix} mn+1=i=0m{ni}×i!×(mi)

经过二项式反演可得:

{ n m } m ! = ∑ i = 0 m ( − 1 ) m − i ( m i ) i n \begin{Bmatrix}n\\m\end{Bmatrix} m!=\sum\limits _{i=0}^{m}(-1)^{m-i}\begin{pmatrix}m\\i\end{pmatrix}i^n {nm}m!=i=0m(1)mi(mi)in

化简可得:

{ n m } = ∑ i = 0 m ( − 1 ) m − i ( m − i ) ! × i n i ! \begin{Bmatrix}n\\m\end{Bmatrix}=\sum\limits _{i=0}^{m}\frac{(-1)^{m-i}}{(m-i)!}\times \frac{i^n}{i!} {nm}=i=0m(mi)!(1)mi×i!in

直接使用 NTT 卷积可做。

第二形式

问题。 Falfa with Substring

首先设至少在对于所有任意的 k k k 个位置上有“bit”的方案数为 f ( k ) f(k) f(k) 并且设答案为 g ( k ) g(k) g(k) 那么有:

f ( k ) = ∑ j ≥ k ( j k ) g ( j ) f(k) = \sum_{j \ge k} \binom{j}{k} g(j) f(k)=jk(kj)g(j)

其中 f ( k ) = ( n − 2 k k ) 2 6 n − 3 k f(k) = \binom{n-2k}{k}26^{n-3k} f(k)=(kn2k)26n3k

对上面的式子进行二项式反演得到:

∑ j ≥ k ( − 1 ) j − k ( j k ) f ( j ) = g ( k ) \sum_{j \ge k}(-1)^{j-k} \binom{j}{k} f(j) = g(k) jk(1)jk(kj)f(j)=g(k)

变形得到:

∑ j ≥ k ( − 1 ) j − k j ! ( j − k ) ! f ( j ) = g ( k ) k ! \sum_{j \ge k}(-1)^{j-k} \frac{j!}{(j-k)!} f(j) = g(k)k! jk(1)jk(jk)!j!f(j)=g(k)k!

P ( x ) = ∑ n ( − 1 ) − n 1 ( − n ) ! x n P(x) = \sum_{n} (-1)^{-n} \frac{1}{(-n)!} x^n P(x)=n(1)n(n)!1xn Q ( x ) = ∑ n n ! f ( n ) x n Q(x) = \sum_{n} n!f(n) x^n Q(x)=nn!f(n)xn

最后计算 P × Q P \times Q P×Q 即可。

例题

ABC266 G

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值