当前位置: 首页 > news >正文

卡特兰数

定义

卡特兰数的定义就是形如 1 , 2 , 5 , 14 , 42 , 132... 1,2,5,14,42,132... 1,2,5,14,42,132...的序列的几种公式,包括组合数递推等形式:

  • f ( n ) = C 2 n n n + 1 = C 2 n n − C 2 n n − 1 , n ≥ 1 f(n)= \frac{C_{2n}^n}{n+1}=C_{2n}^{n}-C_{2n}^{n-1},n \geq 1 f(n)=n+1C2nn=C2nnC2nn1,n1(证明从组合数计算公式下手)
  • f ( n ) = ∑ i = 0 n − 1 f ( i ) ∗ f ( n − i − 1 ) f(n)=\sum_{i=0}^{n-1} f(i)*f(n-i-1) f(n)=i=0n1f(i)f(ni1)
  • f ( n + 1 ) = f ( n ) ∗ ( 4 n − 6 ) n , f ( 2 ) = 1 , n ≥ 2 f(n+1)= \frac{f(n)*(4n-6)}{n},f(2)=1,n \geq 2 f(n+1)=nf(n)(4n6),f(2)=1,n2

计算

递推法

ll a[1005];

ll solve(int n){
    a[0]=1;
    for(int i=1;i<=n;i++)
        for(int j=0;j<i;j++){
            a[i]+=(a[j]*a[i-1-j])%Mod;
            a[i]%=Mod;
        }   
    return a[n];
}

组合数法

ll C[1005][1005];

ll cal(int n){
    C[0][0]=1;
    for(int i=1;i<1005;i++){
        C[i][0]=C[i][i]=1;
        for(int j=1;j<=(i>>1);j++){
            C[i][j]=C[i][i-j]=(C[i-1][j-1]+C[i-1][j])%Mod;
        }
    }
    return (C[2*n][n]-C[2*n][n-1]+Mod)%Mod;  //不要忘记减法的取模
}

线性求法

ll f[maxn],inv[maxn];

ll solve(int n,int p){  //p是取模的数
    f[2]=inv[1]=1LL;
	for(int i=2;i<n+2;i++)  //线性求i的逆元
    	inv[i]=(p-p/i)*inv[p%i]%p;
    for(int i=2;i<n+2;i++)
        f[i+1]=(4*i-6)*f[i]%p*inv[i]%p;
    return f[n+2];
} 

应用

建议参考紫书和B站此视频,以及此博客

  1. n n n个节点的二叉树形态个数
  2. n n n对括号的匹配个数问题
  3. n n n个数入栈后出栈的排列总数
  4. 对凸 n + 2 n+2 n+2边形进行三角剖分的方案个数
  5. n × n n×n n×n的网格中从 ( 1 , 1 ) (1,1) (1,1)走到 ( n , n ) (n,n) (n,n)且不越过第一象限平分线的移动方案数

相关文章:

  • 洛谷 P2532 [AHOI2012]树屋阶梯(高精度卡特兰数)
  • UVA - 580 Critical Mass 四种方法(dp/暴力)
  • 全球20国互联网网速、网费统计:日韩最快最便宜
  • 2020 牛客多校第一场J - Easy Integration(求积分/找规律)
  • 转载:宏定义的一些使用技巧总结
  • 2020 WHU校赛 J - Jogging along the Yangtze River(组合数学+卡特兰数)
  • 数据库设计(2009)
  • UVA - 10288 Coupons(期望的性质)
  • 网络存储的基本常识
  • Codeforces Round #655 (Div. 2) B. Omkar and Last Class of Math(LCM)
  • 当一个割草男孩
  • Codeforces Round #655 (Div. 2) C. Omkar and Baseball(思维)
  • 方阵(gcd+找规律)
  • 2020牛客暑期多校第二场 C - Cover the Tree(思维/贪心)
  • 网页中的flash加载资源时的路径相对于谁?
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • express如何解决request entity too large问题
  • GraphQL学习过程应该是这样的
  • Java|序列化异常StreamCorruptedException的解决方法
  • java小心机(3)| 浅析finalize()
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • log4j2输出到kafka
  • MySQL数据库运维之数据恢复
  • Redux系列x:源码分析
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Travix是如何部署应用程序到Kubernetes上的
  • 开发基于以太坊智能合约的DApp
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (南京观海微电子)——COF介绍
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (一)RocketMQ初步认识
  • ***利用Ms05002溢出找“肉鸡
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET CORE Aws S3 使用
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .Net 应用中使用dot trace进行性能诊断
  • .net6使用Sejil可视化日志
  • .NET文档生成工具ADB使用图文教程
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [AIGC] SQL中的数据添加和操作:数据类型介绍
  • [ARC066F]Contest with Drinks Hard
  • [BZOJ] 2044: 三维导弹拦截
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [C/C++]数据结构 循环队列