二项式系数
二项式系数具有很多优美的性质,在OI中也经常出现。
基础部分
一些记号
-
\(\dbinom rk\):组合数/广义组合数。
-
\(n^{\underline m}\):\(n\)的\(m\)次下降幂。
-
\(n^{\overline m}\):\(n\)的\(m\)次上升幂。
常见的柿子
下降幂和上升幂
二项式系数
定义式
组合意义是从大小为\(r\)的集合中选出大小为\(k\)的子集的方案数。
使用第二个等号处的式子,可以拓展到广义组合数:\(r\in \mathbb{R},k\in \mathbb{Z}\)。
\(k>r>0\)时,\(r^{\underline k}\)中含有\(0\),值为\(0\),但当\(r<0\)时不能这样用。
定义\(k<0\)时\(\dbinom rk=0\)。
多项式推理法
可以将\(\dbinom rk\)视作一个关于\(r\)的\(k\)次多项式。这是很有用的。
证明二项式系数相关的式子在实数范围内同样成立需要用到多项式推理法。设式子是一个\(k\)次多项式,而证明在至少\(k+1\)处整数值处成立,就说明了对任意实数成立。
加法公式
这在使用数学归纳法时是利器。
对于任意合法的\(r,k\)都成立
对称性
一定要注意对称性的限制\(r>0\)。显然当\(r<0\)时这是不对的,因为设\(k>0,r<0\),那么\(\dbinom rk\ne \dbinom r{r-k}=0\)
上指标反转
证明就把\(r^{\underline k}\)拆开,每一项添上\((-1)\)变成上升幂,然后转下降幂。
三项式系数恒等式
变个形:
组合意义显然。然后多项式推理得证。
平行求和
从右边用加法公式展开即可。
上指标求和
从右边用加法公式展开即可。
考虑把左边拆开然后离散微积分,合起来就是右边。
也有组合意义。但是严格来说任何一个有关于二项式系数的恒等式都可以找到一个离谱的组合意义。
与平行求和可以相互推。
吸收/提取恒等式
整行下指标求和
组合意义,从大小为\(n\)的集合中选出任意一个子集的方案数。是二项式定理的特例。
非整行的下指标求和是没有封闭形式的。这一点可以用机械求和法证明。
但是这里是OI,对于非整行的下指标求和\(\sum\limits_{0\le k\le m}\dbinom nk\),考虑\(n,m\)的变化带来的改变不大,可以分块打表/莫队搞出来。
范德蒙德卷积
又或者叫下指标卷积。
极其重要的卷积。可以数归/组合意义证明。
上指标卷积
也很重要。数归可证。
二项式定理
数归或组合意义。
广义二项式定理将\(r\)拓展到实数范围。
下降幂和上升幂有类似的结论。
多项式定理
类似二项式系数地,我们定义:
这就是多重集的全排列个数,又叫多重组合数,也叫多项式系数。
类似二项式定理地,我们有:
注意辨别多重组合数与多重集的组合数。。
多重集的组合数 1
从多重集中取一些元素构成一个多重集,求方案数。
不存在某种元素会取超的情况。
这就等价于\(\sum x_k=C\)的非负整数解的方案数。
直接插板法就行。
多重集的组合数 2
问题同上,但存在某种元素会被取超。
直接容斥,然后转化成上面的问题了。
Lucas和exLucas
和二项式系数关系很大,但还是扔到了数论部分。
用于求大组合数对较小模数取模。
牛顿级数
高阶差分
定义差分算子\(\Delta f(x)=f(x+1)-f(x)\),以及其复合\(\Delta^{m+1}f(x)=\Delta^mf(x+1)-\Delta^mf(x)\)。
定义平移算子\(\mathrm Ef(x)=f(x+1)\),不变算子\(\mathrm 1f(x)=f(x)\)。
线性运算:
-
\(\Delta(f(x)+g(x))=\Delta f(x)+\Delta g(x)\)
-
\(\Delta(C\cdot f(x))=C\cdot \Delta f(x)\)
-
\(\Delta(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)\Delta v(x)+\mathrm Ev(x)\Delta u(x)\)
最后一条极其重要。可以导出分部求和法,详见和式部分。
\(n\)阶差分性质:
用算子证,\(\Delta^n=(\mathrm E-\mathrm 1)^n=\sum\limits_{0\le k\le n}\dbinom nk(-1)^{n-k}\mathrm E^k\),得证。
组合数的差分性质超级好,我们可以将\(\dbinom rk\)视作关于\(r\)的\(k\)次多项式,由加法公式\(\dbinom {r+1}k=\dbinom rk+\dbinom r{k-1}\),可以得到\(\Delta\Big(\dbinom rk\Big)=\dbinom r{k-1}\),于是\(\Delta^m\Big(\dbinom rk\Big)=\dbinom r{k-m}\)
牛顿级数
\(f(x)=\sum\limits_{0\le k\le n}a_kx^k\),由于一个组合数可以视作多项式,总是可以把\(f(x)\)改写成如下形式:
而且只有\(c_n\dbinom xn\)这一项含有\(x^n\),且\(\dbinom xn\)中\(x^n\)的系数为\(\dfrac{1}{n!}\),于是\(c_n=n!a_n\)。
以上形式称之为牛顿级数。
用上面那个式子,可以发现\(\Delta^m f(0)=\sum\limits_{0\le k\le n}c_k\dbinom 0{k-m}=c_m\),于是:
一个很简洁的求和:
这是一个比较重要的结论。
一个\(k\)次多项式可以\(O(k^2)\)转成牛顿级数,直接算每个\(c_i\)即可。
插值
已知\(n\)次多项式\(f(x)\)在\(n+1\)个点\(0,1,2,\dots,n\)处的点值,求\(f(m)\)
用牛顿级数来实现线性插值。
需要预处理一些东西,\(O(n)\)。