Loading

【1】组合数学基础

【1】组合数学基础

我们用 \(\dbinom{n}{m}\) 代表组合数,其含义为从 \(n\) 个物体中选出 \(m\) 个的方案数,也可以记为 \(C_{n}^m\)

\(n\) 的阶乘\(\prod\limits_{i=1}^ni\),记为 \(n!\)

\(n\)\(m\) 次下降幂\(\prod\limits_{i=0}^{m-1}(n-i)=\frac{n!}{(n-m)!}\),记为 \(n^{\underline{m}}\)

1.1 基本恒等式

\(n\) 个物品中选出 \(m\) 个,第 \(i\) 次有 \(n-i+1\) 种选法,因此总共有 \(n^{\underline{m}}\) 中选法,但是因为取出的顺序被多算了,所以要除掉 \(m!\),因此我们可以得到组合数的 **定义式 **:

\[\dbinom{n}{m}=\dfrac{n^{\underline{m}}}{m!}=\dfrac{n!}{m!(n-m)!} \]

预处理阶乘和阶乘的逆元即可做到 \(\Theta(n)-\Theta(1)\),不过因为需要逆元存在因此通常要求模数是大质数。

这一公式也说明了二项式系数的对称性,即 \(\dbinom{n}{m}=\dbinom{n}{n-m}\)

同时当 \(n\) 很大,\(m\) 不大时,我们可以 \(\Theta(m)\) 求出 \(\dbinom{n}{m}\)

从另一种角度考虑,我们分第 \(n\) 个物品选或者不选,可以得到 加法公式

\[\dbinom{n}{m}=\dbinom{n-1}{m-1}+\dbinom{n-1}{m} \]

通过这个式子我们可以做到 \(\Theta(n^2)-\Theta(1)\),不对模数有要求。

我们来看加法公式的一些重要应用:

上指标求和

\[\sum\limits_{i=0}^n\dbinom{i}{m}=\dbinom{n+1}{m+1} \]

证明:

\(\binom{n+1}{m+1}=\binom{n}{m}+\binom{n}{m+1}=\binom{n}{m}+\binom{n-1}{m}+\binom{n-1}{m+1}=……\)

不断对最后一项展开即可。

平行求和

\[\sum\limits_{i=0}^n\dbinom{m+i}{i}=\dbinom{n+m+1}{n} \]

只需要利用对称性,然后通过上指标求和即可。

给出 \(l_1,r_1,l_2,r_2\),请求出下式的值:

\[\sum\limits_{i=l_1}^{r_1}\sum\limits_{j=l_2}^{r_2}\dbinom{i+j}{i} \]

应用两次上指标求和即可。

另一个重要的式子是 吸收恒等式

\[\dbinom{n}{m}=\dfrac{n}{m}\dbinom{n-1}{m-1} \]

证明很简单,按照阶乘的定义拆开即可。

移项可以得到一个更加常用的形式:

\[m\dbinom{n}{m}=n\dbinom{n-1}{m-1} \]

我们来看这种公式有什么应用:

求下式的值:

\[\sum\limits_{i=0}^ni\dbinom{m-i-1}{m-n-1} \]

我们用 \(m-(m-i)\) 替换 \(i\),然后得到:

\[\sum\limits_{i=0}^n(m-(m-i))\dbinom{m-i-1}{m-n-1}=\sum\limits_{i=0}^nm\dbinom{m-i-1}{m-n-1}-\sum\limits_{i=0}^n(m-i)\dbinom{m-i-1}{m-n-1} \]

然后对于后式使用吸收恒等式,变成

\[\sum\limits_{i=0}^nm\dbinom{m-i-1}{m-n-1}-\sum\limits_{i=0}^n(m-n)\dbinom{m-i}{m-n}=m\sum\limits_{i=0}^n\dbinom{m-i-1}{m-n-1}-(m-n)\sum\limits_{i=0}^n\dbinom{m-i}{m-n} \]

此时变成上指标求和的形式,化简完可以得到:

\(\dfrac{n}{m-n+1}\dbinom{m}{m-n}\)

多重集组合数

\[\dbinom{n}{x_1}\dbinom{n-x_1}{x_2}\cdots \dbinom{n-x_1-x_2……-x_{k-1}}{x_k}=\dfrac{n!}{x_1!x_2!\cdots x_k!} \]

最后我们来看两个最为重要的恒等式:

二项式定理

\[(a+b)^n=\sum\limits_{i=0}^n\dbinom{n}{i}a^ib^{n-i} \]

证明只需要考虑从每个单项式里选择 \(a\) 或者 \(b\) 就行。

带入一些 \(a,b\) 的特例可以得到如下三个式子:

\[0^n=\sum\limits_{i=0}^n\dbinom{n}{i}(-1)^i \]

组合数行内交错和。

\[2^n=\sum\limits_{i=0}^n\dbinom{n}{i} \]

子集个数。

\[3^n=\sum\limits_{i=0}^n\dbinom{n}{i}2^i \]

子集枚举的复杂度。

范德蒙德恒等式

\[\sum\limits_{i=0}^n\dbinom{n}{i}\dbinom{m}{k-i}=\dbinom{n+m}{k} \]

这里的证明则需要考虑另一种常见的方式,组合意义。

这些就是就是常见的组合恒等式。

例一

\(q\) 次询问,每次给出 \(n,l,r\),求出下式的值:

\[\sum\limits_{i=l}^r\dbinom{n}{i} \]

\(1\leq n,l,r,q\leq 10^5\)

1.2 常见的组合意义

  • \(n\) 个相同的小球分到 \(m\) 个不同的盒子里,且所有盒子非空。

插板法的经典应用,可以理解成在 \(n-1\) 个空隙中插入 \(m-1\) 个隔板,所以方案数为 \(\binom{n-1}{m-1}\)

  • \(n\) 个相同的小球分到 \(m\) 个不同的盒子里,且盒子可以为空。

等价于右面方程的非负整数解的数量 \(x_1+x_2+\cdots+x_m=n\)

\(y_i=x_i+1\),那么 \(y_1+y_2+\cdots y_m=n+m\),因为 \(x,y\) 一一对应,所以 \(x\) 的数量就是 \(y\) 的数量,而后者显然等于 \(\dbinom{n+m-1}{m-1}\)

例三 [ABC240G] Teleporting Takahashi

例四 CF1548C The Three Little Pigs

例五 P4370 [Code+#4] 组合数问题2

练习一 P8367 [LNOI2022] 盒

1.3 Lucas 定理

对于质数 \(p\),有:

\[\dbinom{n}{m}\equiv \dbinom{n/p}{m/p}\dbinom{n\bmod p}{m\bmod p}\pmod p \]

预处理 \(n,m<p\) 时的阶乘和逆元,可以在 \(\Theta(p)-\Theta(\log_2(n))\) 内求组合数。

例五 [SHOI2015] 超能粒子炮·改

\(F(n,k)=\sum\limits_{i=0}^k\dbinom{n}{i}\)

\(F(n,k)=\sum\limits_{i=0}^k\dbinom{n\bmod p}{i\bmod p}\dbinom{n/p}{i/p}\)

\(=\sum\limits_{i=0}^{p-1}\dbinom{n\bmod p}{i}\sum\limits_{j=0}^{k/p-1}\dbinom{n/p}{j}+\sum\limits_{i=0}^{k\bmod p}\dbinom{n\bmod p}{i}\dbinom{n/p}{k/p}\)

\(=F(n\bmod p,p-1)F(n/p,k/p-1)+F(n\bmod p,k\bmod p)\dbinom{n/p}{k/p}\)

\(\Theta(p^2)\) 预处理,组合数直接 Lucas 求,复杂度 \(\Theta(p^2+T\log_p^2n)\)

这个形式更加通俗的解释是:把 \(n,m\) 写成 \(p\) 进制,那么组合数就是每一位的组合数的乘积。

而这个解释通常可以把 Lucas 定理和 数位DP 联系在一起。

例六 [清华集训2016] 组合数问题

因为答案等于每一位下 \(\dbinom{i_k}{j_k}\) 的乘积,所以只要存在有一位 \(k\),满足 \(i_k<j_k\),那么 \(\dbinom{i}{j}\equiv 0\pmod p\)

考虑数位 DP,设 \(f_{k,0/1,0/1,0/1,0/1}\) 表示当前到第 \(k\) 位,是否出现 \(i_k<j_k\) 的位,\(i_k,j_k\) 是否卡上界,\(i\) 是否等于 \(j\)

而当 \(p=2\) 时,我们可以得到一个常用推论:

  • 对于 \(n,m,[n\& m=m]\equiv \dbinom{n}{m}\pmod p\)

例七 [CTSC2017] 吉夫特

题给条件显然等于 \(a_{b_{i+1}}\)\(a_{b_i}\) 的子集,设 \(f_{i}\) 表示结尾的 \(a=i\) 的方案数,每次枚举子集转移即可。

例八 CF1770F Koxia and Sequence

练习二 [AGC043B] 123 Triangle

练习三 P7976 「Stoi2033」园游会

1.4 Kummer 定理

对于 \(n,m,p\),$$\dbinom{n+m}{n}$$ 中 \(p\) 的个数等于 \(n+m\)\(p\) 进制下的进位次数。

这个定理同样和数位DP关系密切。

例九 CF582D Number of Binominal Coefficients

根据 Kummer 定理,我们只需要保证进位次数 \(\geq \alpha\) 即可。

数位DP,设 \(f_{i,j,0/1,0/1,0/1}\) 表示当前第 \(i\) 位,总进位次数为 \(j\) ,是否卡上界,以及是否向当前位进位。

复杂度 \(\Theta(\log_p^2A)\)

posted @ 2024-08-24 17:51  Larunatrecy  阅读(239)  评论(0)    收藏  举报