卡特兰数相关

Posted hzjuruo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了卡特兰数相关相关的知识,希望对你有一定的参考价值。

这一块一直学的不太好,基本停留在看到题可以看出来是个卡特兰数,但进一步的思考和推导,对我来说就变得困难起来,所以今天趁有时间,复习一下

前言

卡特兰数多用在组合数学的计数问题中,多是那种有两种选择,也就是求有限制的方案数

公式

$h(n)=h(0)\\timesh(n-1)+h(1)\\timesh(n-2)+\\cdots+h(n-1)\\timesh(0)$

$h(n)=\\frach(n-1)\\times(4\\timesn-2)n+1$

$h(n)=C_2\\timesn^n-C_2\\timesn^n-1$

$h(n)=\\fracC_2\\timesn^nn+1$

最后两个通项公式在组合数学中较为常用,关于最后两个通项公式的推倒,我简单推一下,其实就是对组合数公式的应用

$h(n)=C_2\\timesn^n-C_2\\timesn^n-1$

   $=C_2\\timesn^n-\\frac(2\\timesn)!\\timesnn!\\timesn!\\times(n+1)$

   $=C_2\\timesn^n-C_2\\timesn^n\\times\\fracnn+1$

   $=\\frac1n+1\\timesC_2\\timesn^n$

最常见模型

常见的卡特兰数最基本最常见的模型是进出栈问题,也就是对于n个数,求其不同出栈次序的方案数,下面来自学长的解释

技术图片

关键在于那个前缀和不小于零,很多题都可以简化为这种问题,对于卡特兰数这种进出栈模型,在下面还会提到另一种理解

简单应用

1.进出栈模型

2.二叉树计数

3.多边形划分

4.括号匹配

5.有限制的网格路径

关于这些,前方链接

简单例题

BZOJ3907网格

当$n=m$时,这道题就是一个裸的卡特兰数,向右看作进栈,向上看为出栈

那当$n>m$时呢?我们来考虑一下对于卡特兰数的另一种理解

我们将这道题化减为一个模型,给你$n$个1,$m$个0,要求一个$01$串,使得任意前k位中0的个数不少与1的个数,双倍经验,我们考虑用总的方案数减去不满足的方案数,总方案显然是$C_n+m^m$,现在我们考虑不满足要求的01串,前提是满足$n$个$1$,$m$个$0$,对于一个不合法$01$串,我们设在第$i$位上为1,且第一次出现1的个数-0的个数=1,那么此时假如我们把这个串的前$i$个位置,$01$取反,那在此时的串中就出现了$m+1$个0和$n-1$个1,我们发现这种相互转化的关系是唯一对应的,所以不合法的$01$串的方案数是$C_n+m^m+1$,所以最后的答案就是$C_n+m^m-C_n+m^m-1$,当$n=m$时,这个式子就是卡特兰数的通项公式

送一道还可以的练习题

以上是关于卡特兰数相关的主要内容,如果未能解决你的问题,请参考以下文章

组合数学卡特兰数 / 大施罗德数 相关

组合数学卡特兰数 / 大施罗德数 相关

卡特兰数相关问题

HDU-3240(卡特兰数+分解质因数后求逆元)

卡特兰数-Catalan数

Golang 实现卡特兰数