二项式反演

二项式反演

定理 1F(n)=i=0n(ni)G(i)G(n)=i=0n(1)ni(ni)F(i)

证明:

提取系数有 F[n]=i=0n(ni)G[n]

F[n]n!=i=0n1(ni)!G[i]i!

构造指数生成函数 f(n)=i=0F[i]i!xi,g(n)=i=0G[i]i!xi,E(x)=ex=i=0xii!

可以发现卷积形式:f=gE

于是,g=fE1=fex

所以可以得到 g[n]=G[n]n!=i=0nf[i]×(1)ni1(ni)!

整理得:G[n]n!=i=0nF[i]i!×(1)ni1(ni)!

证毕。

稍微变换一下,可以得到二项式反演的另一种形式。

定理 2 F(n)=i=0n(1)i(ni)G(i)G(n)=i=0n(1)i(ni)F(i)

非常的对称唉。可以发现这只在定理 1 移动了 1 的次幂。

定理 3 F(n)=i=n(in)G(i)G(n)=i=n(1)in(in)F(i)

由对定理 2 关系矩阵进行转置可知。

定理 2,3 的证明可以戳这里 反演原理

定理 4 移动定理 31 的次幂,可得 F(n)=i=n(1)i(ni)G(i)G(n)=i=n(1)i+(ni)F(i)

错排问题与二项式反演:

问题:设 a1n1n 的一个排列,且 i(1,n),aii

求满足条件的排列的方案数。

解:

D[n] 表示 n 个数的错排方案数(即满足 aii )。

那么有 n!=i=0n(ni)D[i] ,即:n 个数的全排列数 = i=0n 选择 i 个数的错排方案数。

这不就是二项式定理的标准形式吗。

二项式反演一下得到,D[n]=i=0n(1)nin!(ni)!

D[n]=n!i=0n(1)ii!

这样,就求得了错排公式 D[n]=n!i=0n(1)ii!

应用

若记 f(k) 表示:n 个数钦定选 kai=i ,其余的任意排列;记 g(k) 表示 n 个数恰好选 k 个,其余的都满足 aii

那么对于任意的 f(k)f(k)=i=kn(ik)g(i)

p.s f(k) 表示钦定选 k 个,然后统计钦定情况如此的方案数,对某一种情况会重复计算(我也不知道为什么要用钦定这个词,但似乎好像没有更好的词了)。

对于恰好选 i 个的情况,有 (ik) 种钦定方式。于是 f(k)=i=kn(in)g(i)

可能这样仍然不够明晰,举个例子(辨别钦定 k 个和至少 k 个(设为 h(k) )的区别):

1,22 个数,则 f(1)=2 ,而 h(1)=1

f(1) 的产生共有 2 种方案:

  1. 钦定 1 不动,计算一次排列 {1,2}

  2. 钦定 2 不动,又计算一次排列 {1,2}

h(i) 仅会有 1 种方案,即 {1,2}

使用二项式反演得 i=kn(1)ik(ik)g(i)

在实际题目中,构造这样的 gf 即可运用二项式反演解决问题。

练习题

[MtOI2018]情侣?给我烧了! - 洛谷

题解:LuoguP4921 情侣?给我烧了

posted @   mklzc  阅读(81)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示