• 卡特兰数


    定义

    好像没什么明确的定义,口胡一个吧

    (cat_n)为由(n)(0)(n)(1)组成的序列中,满足前缀(0)的个数永远大于等于前缀(1)个数的序列的方案数

    公式

    定义式:

    定义(cat_0=0,cat_1=1)

    (cat_n=sumlimits_{i=0}^{n}cat_i*cat_{n-i}(nge 2))

    相当与枚举数列断点然后加法原理,比较显然是对的

    通项一:

    (cat_n=C_{2n}^{n}-C_{2n}^{n+1})

    (C_{2n}^{n})为没有限制时的总方案数,即在(2n)个位置中随便放(0)的方案数

    考虑不合法方案:对于每个不合法,一定存在一个最位置使得该序列首次前缀(1)个数大于前缀(0)的个数

    我们把这个位置和之前的(01)全部取反,将得到一个(n+1)(0)(n-1)(1)组成的序列

    每个非法情况都对应着一个这样的序列,所以总方案数(C_{2n}^{n}-C_{2n}^{n+1})

    通项二:

    (cat_n=frac{1}{n+1}C_{2n}^{n})

    证明:

    (cat_n=C_{2n}^{n}-C_{2n}^{n+1})

    (=frac{(2n)!}{n!*n!}-frac{(2n)!}{(n+1)!(n-1)!})

    (=frac{1}{n+1}(frac{(2n)!(n+1)}{n!*n!}-frac{(2n)!}{n!(n-1)!}))

    (=frac{1}{n+1}(frac{(2n)!(n+1)}{n!*n!}-frac{(2n)!(n)}{n!*n!}))

    (=frac{1}{n+1}(frac{(2n)!(n+1-n)}{n!*n!}))

    (=frac{1}{n+1}(frac{(2n!){n!*n!}}))

    (=frac{1}{n+1}C_{2n}^{n})

    递推:

    (cat_{n+1}=frac{4n+2}{n+2}cat_n)

    证明:

    (cat_{n+1}=frac{1}{n+2}C_{2n+2}^{n+1})

    (cat_{n+1}=frac{1}{n+2}*frac{(2n+2)!}{(n+1)!(n+1)!})

    (cat_{n+1}=frac{1}{n+1}*frac{(2n+2)!}{n!(n+2)!})

    (cat_{n=1}=frac{1}{n+1}*frac{(2n)!}{n!*n!}*frac{(n+1)(n+2)}{(2n+1)(2n+2)})

    (cat_{n=1}=frac{n+2}{4n+2}*frac{1}{n+1}C_{2n}^{n})

    (cat_{n+1}=frac{4n+2}{n+2}cat_n)

    应用:

    输入(3)输出(5)就是了

    括号匹配

    给定(n)个左括号和(n)个右括号,求合法的括号组合方案数

    裸体

    网格

    给定(n*n)的网格,只能向上或向右走,求不越过对角线到达右上角的方案数

    裸体

    栈模型

    裸体

    二叉树形态数

    (n)个节点构成的二叉树的形态数

    考虑根节点确定后,我们可以枚举左右子树各有多少个节点

    得到式子:(f(n)=sumlimits_{i=0}^{n}f_if_{n-i})

    发现是卡特兰数列

    (n+2)边形进行三角分割的方案数

    每一刀可以把(n+2)边形分割为两个小凸多边形

    定义(f(0)=0,f(1)=1),得到

    (f(n)=sumlimits_{i=1}^{n-1}f_if_{n-i})

    发现答案就是(cat_{n})

    楼梯分割

    (n)阶楼梯分割为(n)个矩形

    和上面两个例子一样分析

    问题变形:

    (n)(0)(m)(1)组成前缀(0)个数永远大于等于前缀(1)个数的方案数

    总方案数为(C_{n+m}^{n})

    假设位置(k)的时候前缀(1)超过了前缀(0)的数量,那么把前面的(01)翻转

    不合法方案数:(C_{n+m}^{n+1})

    答案(C_{n+m}^{n}-C_{n+m}^{n+1})

  • 相关阅读:
    eclipse中不能找到dubbo.xsd
    CentOS7部署tomcat
    mybatis中的foreach
    mybatis中批量添加orcale
    mybatis中的like使用方式
    mybatis默认参数_parameter和_databaseId
    mybatis中的resultMap
    mybatis操作oracle,插入null值时报错 with jdbctype OTHER
    mybatis 中 #{} 和 ${} 的区别
    mybatis Cause: org.apache.ibatis.binding.BindingException: Parameter 'id' not found. Available parameters are [0, 1, param1, param2]
  • 原文地址:https://www.cnblogs.com/knife-rose/p/12143258.html
Copyright © 2020-2023  润新知