前话
本楼主是蒟蒻,居然最近才搞懂了卡特兰数,在这里总结一下,最基础的总结。
正题
定义卡特兰数为:
卡特兰数的递推式是:
然后有人证出来了一个朴素的递推公式:
是不是很神奇,为什么呢?
我也不会,毕竟那个人不是我。
接着,经过不断摸索,有人解出来了这个递推式的解:
是不是很神奇,为什么呢?
我也不会,毕竟那个人不是我。
卡特兰数就是这样一个很神奇的东西。
如果在比赛中发现一组线性答案长得是这样的:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012……
那么你就可以简单的断定它的答案是可以O(1)算的
应用
如果在比赛中不想找规律呢?
那么您就要先掌握几个简单的应用以至于在比赛中不会懵逼简单地Ak。
第一个:
n个0和n个1,求有多少种方案使得每个前缀的 。
首先,全部方案是,很明显的
其次,讨论不满足的,存在一个奇数使得前个中有个1和个0。
把后面的位都取反,就会变得一共有个0和个1。
反过来,一个有 个0和个1肯定对应一个唯一的不满足的序列。
因为存在一个奇数使得前面的0比1多,然后把后面翻转过来又变成n个0和n个1的序列。
所以不成功的方案数就是:
成功方案就是:
第二个:
一个n个节点的二叉树的形态总数有多少?
明显选取一个点做根,两边分别Dp即可。
所以答案就是卡特兰数。
还有很多很多,比如说:平面直角坐标系上跑有多少种方案,三角形划分,区域划分,大多都是运用公式本身的性质体现出来的卡特兰数,或者在比赛中隐藏的找规律,需要做题练习。