$$ \newcommand{\seq}[2]{{#1}_{1},{#1}_{2},\cdots,{#1}_{#2}} \newcommand{\num}[1]{1,2,\cdots,#1} \newcommand{\stra}[2]{\begin{bmatrix}#1 \\ #2\end{bmatrix}} \newcommand{\strb}[2]{\begin{Bmatrix}#1 \\ #2\end{Bmatrix}} \newcommand{\dw}[1]{\underline{#1}} \newcommand{\up}[1]{\overline{#1}} $$

组合数学

排列组合

排列

\(n\)个不同的元素中取出\(m\)个的方案数,记为\(A(n,m)\)\(P(n,m)\)

\[A(n,m)=\frac{n!}{(n-m)!} \]

组合

\(n\)个相同的元素中取出\(m\)个的方案数,记为\(C(n,m)\)\(\binom{n}{m}\)

\[C(n,m)=\frac{n!}{m!(n-m)!} \\ C(n,m)=C(n-1,m)+C(n-1,m-1) \\ \sum_{i=0}^m C(n,i)=C(n+1,m+1) \]

隔板法

\(m-1\)个相同隔板把\(n\)个相同元素分成\(m\)部分(可以有两个隔板插在同一个空隙)
方案数:$$C(n+m-1,m-1)=C(n+m-1,n)$$

容斥原理

\[|\bigcup_{i=1}^n S_i|=\sum_{m=1}^n (-1)^{m-1}\sum_{a_i<a_{i+1}} |\bigcap_{i=1^m} S_{a_i}| \]

不定方程非负整数解计数

给出不定方程\(\sum_{i=1}^n x_i=m\)\(n\)个限制条件\(x_i\le b_i\) ,其中\(m,b_i\in \mathbb{N}\)。求方程的非负整数解的个数。

考虑求有限制\(x_i\geq b_i+1\)的不定方程非负整数解个数。
将每个有限制的\(x_i\)减去\(b_i+1\),就去掉了限制。
这样,答案\(=\binom{m-1}{m+n-1}\)
将原问题用容斥转化成上述问题计算即可。

数论中的容斥

欧拉函数,莫比乌斯反演

容斥原理一般化

\[f(S)=\sum_{T\subseteq S}g(T) \\ g(S)=\sum_{T\subseteq S}(-1)^{|S|-|T|} f(T) \]

二项式反演

\[f(n)=\sum_{i=0}^n \binom{n}{i} g(i) \\ g(n)=\sum_{i=0}^n (-1)^{n-i} \binom{n}{i} f(i) \]

证明

假设有\(n\)个集合\(A_i\),任意\(k\)个集合的交集都是\(g_k\),任意\(k\)个集合补集的交集都是\(f_k\)。由容斥原理,

\[f_n=g_0-\binom{n}{1}g_1+\binom{n}{2}g_2+\dots+(-1)^n\binom{n}{n}g_n \\ g_n=f_0-\binom{n}{1}f_1+\binom{n}{2}f_2+\dots+(-1)^n\binom{n}{n}f_n \]

应用

在实际应用中,我们往往设\(f(i)\)表示“恰好有\(i\)个”,\(g(i)\)表示“钦定选\(i\)个,其余随意”。

min-max容斥

\[\max(S)=\sum_{T\subseteq S}(-1)^{|T|-1}\min(T) \\ \min(S)=\sum_{T\subseteq S}(-1)^{|T|-1}\max(T) \]

证明

假设\(x\)是第\(k\)大元素,定义映射\(f:x\rightarrow {1,2,\dots,k}\)
易得\(x,k,f(x)\)一一对应。
\(f(\min(x,y))=f(x)\cap f(y),f(\max(x,y))=f(x)\cup f(y)\)
然后

\[|f(\max(S))|=|\bigcup_{x\in S}f(x)|=\sum_{T\subseteq S}(-1)^{|T|-1}|\bigcap_{x\in T} f(x)|=\sum_{T\subseteq S}(-1)^{|T|-1}|f(\min(T))| \]

\[|\max(S)|=|\bigcup_{x\in S}x|=\sum_{T\subseteq S}(-1)^{|T|-1}|\bigcap_{x\in T} x|=\sum_{T\subseteq S}(-1)^{|T|-1}|\min(T)| \]

上述式子在期望意义下也是成立的。

kth min-max容斥

\[\max_k(S)=\sum_{t\subseteq S} (-1)^{|T|-k} \binom{|T|-1}{k-1} \min(T) \]

证明
\(\max_k(S)=\sum_{t\subseteq S} f(|T|) \min(T)\)
考虑构造容斥系数\(f(x)\)
考虑第\(x+1\)大的元素被统计到的贡献,为\(\sum_{i=0}^x \binom{x}{i} f(i+1)\)

\[[x+1=k]=\sum_{i=0}^x \binom{x}{i} f(i+1) \]

二项式反演,得

\[f(x+1)=\sum_{i=0}^x (-1)^{x-i} \binom{x}{i} [x=k-1] \\ f(x)=(-1)^{x-k}\binom{x-1}{k-1} \]

卡特兰数

一个序列有n个0和n个1,保证每个1之前必有1个0的方案数为C(n)
递推式:(注意:括号里只有一个元素的是Catalan数,有两个元素的是组合数)

\[C(n)=C(0)*C(n-1)+C(1)*C(n-2)+...+C(n-1)*C(0) \\ C(n)=C(n-1)*(4*n-2)/(n+1) \\ C(n)=C(2n,n)/(n+1) \\ C(n)=C(2n,n)-C(2n,n-1) \]

前几项是 1 2 5 14 42 132 429 1430 4862 16796 ,混着眼熟

斯特林数

第一类斯特林数

\(n\)个元素摆成\(m\)个圆排列的方案数,记为$$s(n,m)$$
递推式:

\[s(n,m)=s(n-1,m-1)+(n-1)*s(n-1,m) \]

常见应用

\[n!=\sum_{i=0}^n \stra{n}{i} \\ x^{\underline n}=\sum_{i=0}^n \stra{n}{i} (-1)^{n-i} x^i \]

第二类斯特林数

\(n\)不同的球放在\(m\)个相同的盒子(无空盒)里的方案数,记为$$S(n,m)$$
递推式:

\[S(n,m)=S(n-1,m-1)+m*S(n-1,m) \\ S(n,m)=\frac{1}{m!}\sum_{k=0}^{m}(-1)^k\binom m k (m-k)^n=\sum_{k=0}^m (-1)^k\frac{(m-k)^n}{k!(m-k)!} \]

常见应用

\[x^n=\sum_{i=0}^n \strb{n}{i} x^{\underline i} \\ m!\strb{n}{m} = \sum_{k=0}^m \binom{m}{k} k^n (-1)^{m-k} \]

斯特林反演

\[\begin {eqnarray*} \sum_{k=1}^n \stra nk \strb km (-1)^{n-k} &=& [m=n] \\ \sum_{k=1}^n \strb nk \stra km (-1)^{n-k} &=& [m=n] \\ \Downarrow \\ f(n) = \sum_{i=0}^n \strb ni g(i) &\Longrightarrow& g(n) = \sum_{i=0}^n (-1) ^{n-i }\stra ni f(i)\\ f(n) = \sum_{i=0}^n (-1)^{n-i} \strb ni g(i) &\Longrightarrow & g(n) = \sum_{i=0}^n \stra ni f(i) \\ f(n) = \sum_{i=0}^n \stra ni g(i) &\Longrightarrow & g(n) = \sum_{i=0}^n (-1)^{n-i}\strb ni f(i)\\ f(n) = \sum_{i=0}^n (-1)^{n-i}\stra ni g(i) &\Longrightarrow & g(n) = \sum_{i=0}^n \strb ni f(i) \end{eqnarray*} \]

错位排列

递推式:$$f[n]=(n-1)*(f[n-1]+f[n-2])$$

\(n\) 很大时, \(f[n] \approx \frac{n!}{e}\)

证明:

  1. \(n-1\) 个人已经完成错排,第 \(n\) 个人和任意一个人交换
  2. \(n-1\) 个人中的一个和第 \(n\) 个人交换,其余 \(n-2\) 个人已经完成错排

经典的放球问题

为方便表达,我们设方案数为\(N\)\(n\)个球,\(m\)个盒

1. 球不同,盒不同,有空盒

\[N=m^n \]

根据乘法原理可得。

2. 球不同,盒不同,无空盒

(1) \(n>=m\)

\[N=m!*S(n,m) \]

球不同,盒相同的方案数\(\times m!\)

(2) \(n<m\)

\[N=0 \]

3. 球不同,盒同,有空盒

\[N=S(n,1)+S(n,2)+...+S(n,m) \]

因为允许空盒,所以球可以只放在\(m\)个盒中的\(1\)个或\(2\)个或...或\(m-1\)个盒中

4. 球不同,盒同,无空盒

(1) \(n>=m\)

\[N=S(n,m) \]

由第二类斯特林数的定义。

(2) \(n<m\)

\[N=0 \]

5. 球同,盒不同,有空盒

\[N=C(m+n-1,n) \]

插板法,即把\(n\)个球用\(m-1\)个隔板分成\(m\)部分。

6. 球同,盒不同,无空盒

(1) \(n>=m\)

\[N=C(n-1,m-1) \]

先在每个盒子里放一个球,方案数为\(1\);再对剩下的\(n-m\)个球用隔板法,即把\(n-m\)个球用\(m-1\)个隔板分成\(m\)部分。

(2) \(n<m\)

\[N=0 \]

7. 球同,盒同,有空盒

(1) \(n>=m\)

我们发现,当\(n=5,m=3\)时的方案为:

5 0 0

4 1 0

3 2 0

3 1 1

2 2 1

\(5\)种方案。

我们发现,问题可以转化为:把正整数\(n\)分解成不超过\(m\)个自然数的方案数。如果暴力dfs,时间复杂度为\(O(\)爆炸\()\)竟然还有70分

有一个重要结论:把正整数\(n\)分解成不超过\(m\)个自然数的方案数,等于把正整数\(n\)分解成若干个\(\le m\)的自然数的方案数。这个定理的证明方法,请自行百度。(我也不会)

我们考虑使用母函数:对于分解出的每个\(\le m\)的整数\(i\),我们用多项式表示为$$(xi+x+...+x^{floor(\frac{n}{i})*i})$$

此处\(floor(x)\)表示\(x\)向下取整。

于是,母函数\(G(x)\):$$G(x)=\prod_{i=1}{m}(xi+x{2i}+...+x)*i})$$

求出\(x^n\)的系数即可。

(2) \(n<m\)

$$\color{white}{???}$$

8. 球同,盒同,无空盒

(1) \(n>=m\)

母函数$$G(x)=\prod_{i=1}{m}(xi+x{2i}+...+x)*i})$$

\(x^{n-m}\)的系数。

(2) \(n<m\)

\[N=0 \]

生成函数

引子

砝码称重问题

有1g砝码5个,2g砝码3个,5g砝码2个。相同质量的砝码完全相同。问有多少种能称出15g的方案?

很容易想到暴力枚举每一种可能的称量方案,但是时间复杂度为\(O(n^n)\)级别,计算机无法承受。于是我们引入母函数的概念。设\(G(x)\)为母函数,对于1g的砝码能称出的不同重量,我们用多项式表示为$$(x1+x2+...+x{15})$$同理,2g砝码能表示为$$(x2+x4+...+x)$$5g砝码能表示为$$(x5+x+x^{15})$$
于是$$G(x)=(x1+x2+...+x{15})(x2+x4+...+x)(x5+x+x^{15})$$
经过化简,求出\(x^{15}\)的系数,即为答案。

由于只需化简多项式,母函数的时间复杂度仅为\(O(n^3)\),空间复杂度为\(O(n)\),得到巨大提升。
使用fft可以进一步优化。

OGF

序列\(a\)的普通生成函数:\(F(x)=\sum_{n} a_nx^n\)

基本运算律

\(F(x)\)\(a\)的OGF,\(G(x)\)\(b\)的OGF,则:

  • \(F(x)\pm G(x)\)\(a\pm b\)的OGF
  • \(F(x)G(x)\)\(\sum_{i=0}^n a_ib_{n-i}\)的OGF

常见封闭形式

\[{1,1,1,\dots}\rightarrow F(x)=\frac{1}{1-x} \\ {1,p,p^2,\dots}\rightarrow F(x)=\frac{1}{1-px} \\ {1,2,3,\dots}\rightarrow F(x)=\frac{1}{(1-x)^2} \\ {\binom{n}{i}}\rightarrow F(x)=(1+x)^n \\ {\binom{n+i}{i}}\rightarrow F(x)=\frac{1}{(1-x)^{n+1}} \\ \text{fib}[i]\rightarrow F(x)=\frac{x}{1-x-x^2} \text{卡特兰数}\;H_n=\sum_{i=0}^{n-1} H_iH_{n-i-1}\rightarrow H(x)=\frac{2}{1+\sqrt{1-4x}} \]

封闭形式的展开

斐波那契数列

\[F(x)=\frac{x}{1-x-x^2}=\frac{A}{1-ax}+\frac{B}{1-bx} \]

通分,解得

\[\begin{cases} A=\frac{1}{\sqrt 5} \\ B=-\frac{1}{\sqrt 5} \\ a=\frac{1+\sqrt 5}{2} \\ b=\frac{1-\sqrt 5}{2} \end{cases} \]

\[F(x)=\sum_{n} \frac{1}{\sqrt 5}((\frac{1+\sqrt 5}{2})^n-(\frac{1-\sqrt 5}{2})^n)x^n \]

广义二项式定理

\[\binom{n}{k}=\frac{n^{\underline k}}{k!}(r\in \mathbb{C},k\in \mathbb{N}) \]

卡特兰数

\(H(x)=\frac{1-\sqrt{1-4x}}{2x}\)
\(\sqrt{1-4x}\)用广义二项式定理展开,代回原式,得

\[H(x)=\sum_{n\geq 0}\binom{2n}{n}\frac{1}{n+1}x^n \]

EGF

序列\(a\)的指数生成函数:\(F(x)=\sum_{n} a_n\frac{x^n}{n!}\)

基本运算律

\(F(x)\)\(a\)的EGF,\(G(x)\)\(b\)的EGF,则:

  • \(F(x)\pm G(x)\)\(a\pm b\)的EGF
  • \(F(x)G(x)\)\(\sum_{i=0}^n \binom{n}{i}a_ib_{n-i}\)的EGF

泰勒展开

我们用下式表示\(f(x)\)\(x_0\)处的泰勒展开式

\[f(x)=\sum_{i=0}^n \frac{f^{(i)}(x_0)}{n!}+R_n(x) \]

其中\(R_n(x)\)\((x-x_0)^n\)的高阶无穷小。

直观理解

常见封闭形式

\[{1,1,1,\dots}\rightarrow F(x)=e^x {1,p,p^2,\dots}\rightarrow F(x)=e^{px} \]

排列与圆排列

长为\(n\)的排列的EGF:\(P(x)=\sum_{n\geq 0}\frac{n!x^n}{n!}=\frac{1}{1-x}\)
长为\(n\)的圆排列的EGF:\(Q(x)=\sum_{n\geq 0}\frac{(n-1)!x^n}{n!}=\ln(\frac{1}{1-x})\)

posted @ 2019-10-17 20:14  chc_1234567890  阅读(389)  评论(0编辑  收藏  举报