ACM模板
目录
- Catalan数证明
- 卡特兰数应用
Catalan数证明
1.卡特兰数递推式:
an={1,n=0∑i=0n−1ai×an−1−i,n>0a_n=\begin{cases} 1,n=0\\\sum_{i=0}^{n-1}a_i×a_{n-1-i},n>0\end{cases} an={1,n=0∑i=0n−1ai×an−1−i,n>0
2.卡特兰数组合数:
an=C2nn−C2nn−1a_n=C_{2n}^n-C_{2n}^{n-1} an=C2nn−C2nn−1
证明递推式
先举个例子,假如你身上没有钱,但是你想花钱,你每次可以花一元钱,只要你有钱你可以连续花钱,你父母准备给你n元钱但是每次只给你一元钱,只要还没给你n元钱就可以一直给,问你有多少种花钱方案?
如下图,我们令父母给钱代表向右移动一个单位,花钱代表向上一个单位初始在原点(你没有花钱,你父母也没有给你钱)最终父母给我们n元钱,我们花掉n元钱。根据实际情况我们可以知道,我们花的钱一定不超过父母给我们的钱。抽象一下现在要求从(0,0)到(n,n)的一条路径并且路径上的所有点的纵坐标小于等于横坐标
求从(0,0)到(n,n)的一条路径的方案数为:C2nnC_{2n}^nC2nn
如果某条路径不合法,如上图黑色路径,路径上存在点的纵坐标大于横坐标,我们找到第一个不符合该条件的点如图橘黄色的点,该点一定落在y=x+1y=x+1y=x+1这条直线上,我们将此不合法路径橘色点的后部分关于y=x+1y=x+1y=x+1做对称,如图黄色部分该终点一定落在(n−1,n+1)(n-1,n+1)(n−1,n+1)。因此从求从(0,0)到(n,n)的不合法路径的方案数可以转化为从(0,0)到(n-1,n+1)的一条路径的方案数为:C2nn−1C_{2n}^{n-1}C2nn−1
从(0,0)到(n,n)的一条路径并且路径上的所有点的纵坐标小于等于横坐标:C2nn−C2nn−1C_{2n}^{n}-C_{2n}^{n-1}C2nn−C2nn−1
卡特兰数应用
- 进栈
- 括号匹配
- 画二叉树
- 凸多边形三角划分
- …