学习笔记第十八节:卡特兰数

版权声明:因为我是蒟蒻,所以请大佬和神犇们不要转载(有坑)的文章,并指出问题,谢谢 https://blog.csdn.net/Deep_Kevin/article/details/83378567

前话

      本楼主是蒟蒻,居然最近才搞了卡特兰数,在这里总结一下,最基础的总结。

正题

      定义卡特兰数为:h(n)

      卡特兰数的递推式是:h(n)=\sum_{i=0}^{n-1}h(i)*h(n-i-1)

      然后有人证出来了一个朴素的递推公式:h(n)=\frac{(4n-2)*h(n-1)}{n+1}

      是不是很神奇,为什么呢?

      我也不会,毕竟那个不是我。

      接着,经过不断摸索,有人解出来了这个递推式的解:h(n)=\frac{C(2n,n)}{n+1}=C(2n,n)-C(2n,n-1)

      是不是很神奇,为什么呢?

      我也不会,毕竟那个不是我。

      卡特兰数就是这样一个很神奇的东西。

      如果在比赛中发现一组线性答案长得是这样的:1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012……

      那么你就可以简单的断定它的答案是可以O(1)算的

应用

      如果在比赛中不想找规律呢?

      那么您就要先掌握几个简单的应用以至于在比赛中不会懵逼简单地Ak。

    第一个:

      n个0和n个1,求有多少种方案使得每个前缀的 total_1>=total_0

      首先,全部方案是C(2n,n),很明显的

      其次,讨论不满足的,存在一个奇数2k+1使得前2k+1个中有k个1和k+1个0。

      把后面的位都取反,就会变得一共有n+1个0和n-1个1。

      反过来,一个有 n+1个0和n-1个1肯定对应一个唯一的不满足的序列。

      因为存在一个奇数使得前面的0比1多,然后把后面翻转过来又变成n个0和n个1的序列。

      所以不成功的方案数就是:C(2n,n+1)=C(2n,n-1)

      成功方案就是:C(2n,n)-C(2n,n-1)=h(n)

    第二个:

      一个n个节点的二叉树的形态总数有多少?

      明显选取一个点做根,两边分别Dp即可。

      f(n)=\sum_{i=0}^{n-1}f(i)*f(n-i-1) =h(n)

       所以答案就是卡特兰数。

       还有很多很多,比如说:平面直角坐标系上跑有多少种方案,三角形划分,区域划分,大多都是运用公式本身的性质体现出来的卡特兰数,或者在比赛中隐藏的找规律,需要做题练习。

猜你喜欢

转载自blog.csdn.net/Deep_Kevin/article/details/83378567
今日推荐