二项式系数

二项式系数具有很多优美的性质,在OI中也经常出现。

基础部分

一些记号

  • (rk):组合数/广义组合数。

  • nmnm次下降幂。

  • nmnm次上升幂。

常见的柿子

下降幂和上升幂

nm=n(n1)(n2)(nm+1)=n!(nm)!

nm=n(n+1)(n+2)(n+m1)=(n+m1)!(n1)!

nm=nk(nk)mk

nm=nk(n+k)mk

nm=1(n+1)m

nm=1(n1)m

二项式系数

定义式

(rk)=r!k!(rk)!=rkk!

组合意义是从大小为r的集合中选出大小为k的子集的方案数。

使用第二个等号处的式子,可以拓展到广义组合数:rRkZ

k>r>0时,rk中含有0,值为0,但当r<0时不能这样用。

定义k<0(rk)=0

多项式推理法

可以将(rk)视作一个关于rk次多项式。这是很有用的。

证明二项式系数相关的式子在实数范围内同样成立需要用到多项式推理法。设式子是一个k次多项式,而证明在至少k+1处整数值处成立,就说明了对任意实数成立。

加法公式

(rk)=(rk1)+(r1k1)

这在使用数学归纳法时是利器。

对于任意合法的r,k都成立

对称性

(rk)=(rrk)r>0

一定要注意对称性的限制r>0。显然当r<0时这是不对的,因为设k>0,r<0,那么(rk)(rrk)=0

上指标反转

(rk)=(1)k(kr1k)

证明就把rk拆开,每一项添上(1)变成上升幂,然后转下降幂。

三项式系数恒等式

(rn)(nk)=(rk)(rknk)

变个形:

(rn)(rk)=(rknk)(nk)

组合意义显然。然后多项式推理得证。

平行求和

0km(n+kk)=(n+m+1m)

从右边用加法公式展开即可。

上指标求和

0kn(km)=(n+1m+1)

从右边用加法公式展开即可。

考虑把左边拆开然后离散微积分,合起来就是右边。

也有组合意义。但是严格来说任何一个有关于二项式系数的恒等式都可以找到一个离谱的组合意义。

与平行求和可以相互推。

吸收/提取恒等式

k(rk)=r(r1k1)

整行下指标求和

0kn(nk)=2n

组合意义,从大小为n的集合中选出任意一个子集的方案数。是二项式定理的特例。

非整行的下指标求和是没有封闭形式的。这一点可以用机械求和法证明。

但是这里是OI,对于非整行的下指标求和0km(nk),考虑n,m的变化带来的改变不大,可以分块打表/莫队搞出来。

范德蒙德卷积

又或者叫下指标卷积。

n+m=t(rn)(sm)=(r+st)

极其重要的卷积。可以数归/组合意义证明。

上指标卷积

r+s=t(rn)(sm)=(t+1n+m+1)

也很重要。数归可证。

二项式定理

(x+y)r=0kr(rk)xkyrk

数归或组合意义。

广义二项式定理将r拓展到实数范围。

下降幂和上升幂有类似的结论。

多项式定理

类似二项式系数地,我们定义:

(nk1,k2,k3,,km)=n!k1!k2!k3!km!

这就是多重集的全排列个数,又叫多重组合数,也叫多项式系数

类似二项式定理地,我们有:

(x1+x2++xm)n=nk>0,n1+n2+n3++nm=n(nn1,n2,n3,,nm)x1n1x2n2x3n3xmnm

注意辨别多重组合数与多重集的组合数。

多重集的组合数 1

从多重集中取一些元素构成一个多重集,求方案数。

不存在某种元素会取超的情况。

这就等价于xk=C的非负整数解的方案数。

直接插板法就行。

多重集的组合数 2

问题同上,但存在某种元素会被取超。

直接容斥,然后转化成上面的问题了。

Lucas和exLucas

和二项式系数关系很大,但还是扔到了数论部分。

用于求大组合数对较小模数取模。

牛顿级数

高阶差分

定义差分算子Δf(x)=f(x+1)f(x),以及其复合Δm+1f(x)=Δmf(x+1)Δmf(x)

定义平移算子Ef(x)=f(x+1),不变算子1f(x)=f(x)

线性运算:

  • Δ(f(x)+g(x))=Δf(x)+Δg(x)

  • Δ(Cf(x))=CΔf(x)

  • Δ(u(x)v(x))=u(x+1)v(x+1)u(x)v(x+1)+u(x)v(x+1)u(x)v(x)=u(x)Δv(x)+Ev(x)Δu(x)

最后一条极其重要。可以导出分部求和法,详见和式部分。

n阶差分性质:

Δnf(x)=0kn(nk)(1)nkf(x+k)

用算子证,Δn=(E1)n=0kn(nk)(1)nkEk,得证。

组合数的差分性质超级好,我们可以将(rk)视作关于rk次多项式,由加法公式(r+1k)=(rk)+(rk1),可以得到Δ((rk))=(rk1),于是Δm((rk))=(rkm)

牛顿级数

f(x)=0knakxk,由于一个组合数可以视作多项式,总是可以把f(x)改写成如下形式:

f(x)=0knck(xk)

而且只有cn(xn)这一项含有xn,且(xn)xn的系数为1n!,于是cn=n!an

以上形式称之为牛顿级数。

用上面那个式子,可以发现Δmf(0)=0knck(0km)=cm,于是:

f(x)=0knΔkf(0)(xk)

一个很简洁的求和:

0kn(nk)(1)k(a0+a1k+a2k2++ankn)=0kn(nk)(1)kf(k)=(1)n0kn(nk)(1)nkf(k)=(1)nΔnf(0)=(1)ncn=(1)nn!an

这是一个比较重要的结论。

一个k次多项式可以O(k2)转成牛顿级数,直接算每个ci即可。

插值

已知n次多项式f(x)n+1个点0,1,2,,n处的点值,求f(m)

用牛顿级数来实现线性插值。

f(m)=0knck(mk)=0kn(mk)Δkf(0)=0kn(mk)0tk(kt)(1)ktf(t)=0tnf(t)tkn(mk)(kt)(1)kt=0tnf(t)(mt)0knt(mtk)(1)k=0tnf(t)(mt)0knt(km+t1k)=0tnf(t)(mt)(nmnt)=0tnf(t)(mt)(mt1nt)(1)nt=0tn(1)ntf(t)mn+1t!(nt)!m

需要预处理一些东西,O(n)

posted @   RandomShuffle  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示