zoukankan      html  css  js  c++  java
  • Catalan 数

    (Catalan) 数列

    ​ 给定(n)(0)(n)(1),它们按照某种顺序排成长度为(2n)的序列,满足任意前缀中(0)的个数都不少于(1)的个数的序列的数量即为(Catalan)数列。

    证明:

    ​ 令(n)(0)(n)(0)随意排成一个长度为(2n)的序列(s),若(s)不满足任意前缀和中(0)的个数不少于(1)的个数,则存在一个最小的位置(2p+1),使得(s)[(1,2p+1)]中有(p)(0)(p+1)(1)。而把(s)[(2p+2),(2n) ]中的数都取反,包含(n-p-1)(0)(n-p)(1)。于是,我们得到了(n-1)(0)(n+1)(1)排成的序列。

    ​ 同理,令(n-1)(0)(n+1)(1)随意排成一个长度为(2n)的序列(B)。也必定存在一个最小的位置(2p+1),使得(s[1,2p+1])中有(p)(0)(p+1)(1),把后面的序列取反,就得到了(n)(0)(n)(1)组成的存在一个前缀(0)(1)多的序列。

    ​ 所以,以下两种序列的数量其实是一样的:

    1. (n)(0),(n)(1)组成的存在一个前缀(0)(1)多的序列。
    2. (n-1)个0,(n+1)(1)组成的序列。

    所以,用所有情况减去不合法的情况就得到了卡特兰数。

    推论

    ​以下问题都与(Catalan)数有关

    括号匹配的合法括号序列数量

    合法出栈序列数量

    (n) 个节点构成的不同二叉树的数量

    平面直角坐标系中,每一步只能向上或向右走,从((0,0))((n,n))并且除了两个端点外不接触直线(y=x)的路线数量为(2Cat_{n-1})

  • 相关阅读:
    BZOJ 1907: 树的路径覆盖
    BZOJ 1295: [SCOI2009]最长距离
    BZOJ 1303: [CQOI2009]中位数图
    BZOJ 1468: Tree
    BZOJ 3784: 树上的路径
    BZOJ 2006: [NOI2010]超级钢琴
    BZOJ 1831: [AHOI2008]逆序对
    BZOJ 2521: [Shoi2010]最小生成树
    HDU 6685 Rikka with Coin (枚举 思维)
    HDU 6659 Acesrc and Good Numbers (数学 思维)
  • 原文地址:https://www.cnblogs.com/doublety/p/11778734.html
Copyright © 2011-2022 走看看