• 由Catalan数所引出的


    百度一番:

    历史

    ·1758年,Johann Segner 给出了欧拉问题的递推关系;
    ·1838年,研究热潮:
    –GabrielLame给出完整证明和简洁表达式;
    –EugèneCharlesCatalan在研究汉诺塔时探讨了相关问题,解决了括号表达式的问题。
    –……
    –1900年,EugenNetto在著作中将该数归功于Catalan。
    ·1988年以及1999年的文献研究表明实际上最初发现Catalan数的也不是Euler。
    –1753欧拉在解决凸包划分成三角形问题的时候,推出了Catalan数。
    –1730年我国清朝时期的明安图(蒙古人)比Catalan更早使用了Catalan数,见《割圜密率捷法》。后来他的学生在1774年将其完成发表。
    最后由比利时的数学家欧仁·查理·卡塔兰(1814–1894)命名。
     
    卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列。以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名,其前几项为(从第零项开始) : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, ...
    卡特兰数Cn满足以下递推关系 [1]  :

    公式一

    递归公式

    h(0)=h(1)=1

    h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)*h(0) (n>=2)

    如果我们用这个公式显然我们要使用递归算法,那么数据一大就在时空上很麻烦

    公式二

    递推公式

    h(n)=h(n-1)*(4*n-2)/(n+1)

    这个公式应用递推,看上起十分和善

    但对大数据呢?

    我们注意到大数据的时候h(n)会很大,这时候题目一般会让你对某素数取模(当然你可以打高精度(划掉))

    但你在取模过程中难保一个h(n)%mod=0

    那么根据公式下面所有的数都会等于0,于是你就愉快的WA了

    公式三

    组合数公式1

    h(n)=C(2n,n)/(n+1) (n=0,1,2,...)

    卡特兰数可以与组合数联系起来,得到上面的公式

    而组合数就是一个杨辉三角,可以递推得到(这个不属于这道题的讨论范围我假装你们都会(逃))

    但我们发现对于大数据你要取模,而对于除法你是没办法用膜的性质的(当然你可以应用逆元(划掉)),所以造成了麻烦

    公式四

    组合数公式2

    h(n)=c(2n,n)-c(2n,n-1) (n=0,1,2,...)

    与组合数公式1不同这个是两个组合数的减法

    减法是可以用膜的性质的,于是你可以愉快的AC了。

  • 相关阅读:
    BZOJ.3453.tyvj 1858 XLkxc(拉格朗日插值)
    BZOJ.5339.[TJOI2018]教科书般的亵渎(拉格朗日插值) & 拉格朗日插值学习笔记
    BZOJ.5461.[PKUWC2018]Minimax(DP 线段树合并)
    AGC 014E.Blue and Red Tree(思路 启发式合并)
    BZOJ.4199.[NOI2015]品酒大会(后缀自动机 树形DP)
    BZOJ.4199.[NOI2015]品酒大会(后缀数组 单调栈)
    BZOJ.4052.[Cerc2013]Magical GCD(思路)
    BZOJ.3307.雨天的尾巴(dsu on tree/线段树合并)
    字节跳动冬令营网络赛 D.The Easiest One(贪心 数位DP)
    BZOJ.1210.[HNOI2004]邮递员(插头DP Hash 高精)
  • 原文地址:https://www.cnblogs.com/719666a/p/9716116.html
Copyright © 2020-2023  润新知