蒟蒻の笔记OI中组合数学
Posted WangManhe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蒟蒻の笔记OI中组合数学相关的知识,希望对你有一定的参考价值。
组合数学
这东西作为csp初赛常驻题目,有时也会在程序题里ex人,所以,这一块的基础一定要打牢
组合数学概述
两大原理
这里指的是加法原理和乘法原理
加法原理
加法原理即把同阶段的不同的情况相加,举个形象的例子:
从一个城市到另一个城市,有 n n n条公路,同时又有 m m m条铁路,则总共有 n + m n+m n+m种方法
乘法原理
乘法原理即把不同阶段的选择数相乘,举个例子
从a城市经过b城市到c城市,从a到b有 n n n条路,从c到b有 m m m条路,则从a经过b到c有 n ∗ m n*m n∗m条路径
排列数和组合数
下面我们了解一下组合数学的两大基本运算
C n m C_n^m Cnm表示在 m m m个不同的物体中 n n n选择n个的方案数,叫做组合数,有
C n m = n ! m ! ( n − m ) ! C_n^m=\\fracn!m!(n-m)! Cnm=m!(n−m)!n!
A n m A_n^m Anm表示在 m m m个不同的物体中 n n n选择n个排成序列的方案数,叫做排列数,有
A n m = n ! ( n − m ) ! A_n^m=\\fracn!(n-m)! Anm=(n−m)!n!
这样我们就解决了两个最基本的问题
下面我们来看一下原理(我用容易理解的方法讲一下):
先看排列数 A n m A_n^m Anm,对于待选的序列,第一项有 n n n个选择,第二项有 n − 1 n-1 n−1个,一次类推,第 m m m项有 n − m + 1 n-m+1 n−m+1个,根据乘法原理,把它们相乘,总共即为从 n n n乘到 n − m + 1 n-m+1 n−m+1,也就是, A n m = n ! ( n − m ) ! A_n^m=\\fracn!(n-m)! Anm=(n−m)!n!
下面再看组合数 C n m C_n^m Cnm,它和排列数的区别在于排列数区分了物品的顺序,而组合数没有,那么就可以直接把有序转化成无序,即 C n m = A n m m ! C_n^m=\\fracA_n^mm! Cnm=m!Anm,代入得 C n m = n ! m ! ( n − m ) ! C_n^m=\\fracn!m!(n-m)! Cnm=m!(n−m)!n!
其他实用的数
各个伟大的前辈们已经为我们整理出了一套完整的组合数学体系,其中除组合数和排列数外,还有其他的数,全部与排列组合有关
Catalan数
我没看到Catalan数的标准表示法,就自己随便写吧
首先我们来看一组题目(也可以想想为什么是一组)
已知一个凸n边型,众所周知,它可以划分为n-1个三角形,求有多少种划分方法
已知一棵二叉树,有n个节点,求这课二叉树有几种情况(注意二叉树区分左右子树)
已知n对括号,求有多少个括号序列正确匹配
有n个序列依次进栈,求有多少种合法的出栈序列
一个长度为n的序列全部由1和-1组成,要求多少个序列满足所有前缀和为非负数
由于OIer对二叉树的喜爱与赞美之情我们从第二个问题入手
令当前问题的答案为
h
n
h_n
hn,显然,我们必须要选一个根节点,剩下的节点就被分成左子树和右子树,于是我们得到递推式:
h
n
=
∑
i
=
0
n
−
1
h
i
h
n
−
i
−
1
(
h
0
=
h
1
=
1
)
h_n=\\sum_i=0^n-1 h_ih_n-i-1 \\left(h_0=h_1=1\\right)
hn=i=0∑n−1hihn−i−1(h0=h1=1)
这就是Catalan数的递推式,显然,只要符合这个递推式就是Catalan数,我们代入剩下的问题就知道了——其实这几个问题的答案完全相同
同时我们还可以得到一些其他公式:
一阶递推公式:
h
n
=
4
n
−
2
n
+
1
h
n
−
1
h_n=\\frac4n-2n+1h_n-1
hn=n+14n−2hn−1
一个通项公式:
h
n
=
C
n
2
n
−
C
n
+
1
2
n
h_n=C_n^2n-C_n+1^2n
hn=Cn2n−Cn+12n
另一个更常用的通项公式:
h
n
=
1
n
+
1
C
n
2
n
h_n=\\frac1n+1C_n^2n
hn=n+11Cn2n
来来来,开推:
(以下这小段参考了这篇博客)
我们记
C
(
x
)
=
∑
n
≥
0
h
n
x
n
C(x)=\\sum_n\\geq 0h_nx^n
C(x)=n≥0∑hnxn(n为整数)
显然,当
n
=
0
n=0
n=0时,有
h
n
x
n
=
1
h_nx^n=1
hnxn=1(此时h_0=1,x^0同样等于1)
于是把
n
=
0
n=0
n=0的情况特殊考虑就有
∑
n
≥
1
h
n
x
n
=
C
(
x
)
−
1
\\sum_n\\geq 1h_nx^n=C(x)-1
n≥1∑hnxn=C(x)−1
对于式子的左边,我们把
h
n
h_n
hn代入得到:
∑
n
≥
1
h
n
x
n
=
∑
n
≥
1
∑
i
=
0
n
−
1
h
i
h
n
−
i
−
1
x
n
\\sum_n\\geq 1h_nx^n=\\sum_n\\geq 1\\sum_i=0^n-1 h_ih_n-i-1x^n
n≥1∑hn以上是关于蒟蒻の笔记OI中组合数学的主要内容,如果未能解决你的问题,请参考以下文章