【ICPC模板】Catalan Number (卡特兰数)

目录

Catalan Number (卡特兰数)

通项公式

递推关系

渐进关系

相关问题

卡特兰数扩展问题


Catalan Number (卡特兰数)

通项公式

其中Cn表示Catalan数序列的第n项。

上述通项公式可以被理解为:在一个二维直角坐标平面内,从(0, 0)点出发走到(2n, 0)点的路径数,这条路径要求对于任意点(x, y)对于其横坐标相邻点的纵坐标差值的绝对值等于1,且合法的路径要求任意一个点都不在横坐标下方。先不考虑合法与不合法,如果只要求能够从(0, 0)到达(2n, 0),则要求有一半的点选择向上走,一半的点选择向下走,因此数量应等于2n中抽取n个元素的组合数。接着排除不合法的情况,对于所有不合法的情况,按照上述的走法,可以确保能够找到第一个点(x, y)满足:它的纵坐标等于-1,且是从左到右第一个这样的点,以这个点做平行于x轴的直线,将这个点之前的点做这条直线x = -1的对称点,则起点(0, 0)被翻折到(0, -2),由于每一条不合法路径都满足这个条件,而反过来,对于每一个从(0, -2)出发到达(2n, 0)的路径都可以按照刚才的翻折方法逆着翻折回去,得到一条不合法路径,这样的路径有2n中抽取n + 1的组合数条,因为要从纵坐标-2走到0必须保证选择向上走的点数比向下走的点数多2,从刚才C(2n, n)中排除掉这里的C(2n, n+1)就得到了卡特兰数第n项Cn。

 

 

递推关系

将n – 1项与n项求出,作商,得到递推公式。

 

 

渐进关系

核心:利用斯特林公式进行推导。

可以得到

~表示当n趋向于∞时,左式除以右式的商趋向于1.

 

 

相关问题

1.Cn可以表示长度为2n的Dyck Words的种类数,Dyck Words由n个A字符与n个B字符组成,且满足在任意位置上,前缀中A的数量不小于B的数量,如果A用(代替,把B用)代替,就是一个典型的括号表达式,因此也可以用来表示合法的表达式个数。

2.Cn可以表示有n个结点的不同构的二叉树的种类数。

3.Cn可以表示有2n + 1个结点的不同构的满二叉树的种类数。

4.Cn可以表示在n*n的格点中从左下角延格线走到右上角且始终不超过对角线的方案数。

5.Cn可以表示通过连接顶点将n + 2个顶点的凸多边形划分成三角形的方案数。

6.Cn表示有n个元素的出栈顺序的种类数。

7.Cn可以用在买票找零钱问题上,对于2n的观众,收银台初始没有钱,无法找零,接下来有n个人拿a元买票,n个人拿2a元买票(需要找零钱数为a),能够保证每一个需要找零的观众来的时候都能够得到找零的合法方案数。

8.Cn可以表示在二维直角坐标系中,从(0, 0)走到(2n, 0)点,每个相邻整数点的纵坐标差值的绝对值为1,且点始终不会落到x轴下方的方案数。

 

卡特兰数扩展问题

从(0, 0)点沿网格格线走到(a, b)点,且路径上始终不越过对角线x = y的方案数有

种,证明思路与一般卡特兰数通项公式的类似,先计算出全部可能方案数,再减去非法方案数,对于每个非法方案,总可以找到其越过对角线的第一个点,过这点做对角线的平行线,将这个点之前的所有路径都以此直线为对称轴进行翻折,起点(0, 0)必然会翻折到(-1, 1)点上,因此非法方案数的数目等同于从(-1, 1)点走到(a, b)点的路径数。

假设对于一个找零问题,题目给定初始条件是没有零钱,接着会来a个拿50元的人,b个拿100元的人(需要找零的人),并要求最后剩下的50元零钱的张数在[L, R]之间,使用这里的定理,对于要剩下j张50元零钱,可以将(n + j) / 2代入a,(n – j) / 2代入b,考虑到n + j为奇数的情况下必然无法达成条件,因此代入式子后,前面的b向下取整,后面的b向上取整,即:

对j取[L, R]每一个整数,求和,分j为奇偶讨论可归纳出:

所以求和式得到:

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值