卡特兰数相关

这一块一直学的不太好,基本停留在看到题可以看出来是个卡特兰数,但进一步的思考和推导,对我来说就变得困难起来,所以今天趁有时间,复习一下

前言

卡特兰数多用在组合数学的计数问题中,多是那种有两种选择,也就是求有限制的方案数

公式

$h(n)=h(0){\times}h(n-1)+h(1){\times}h(n-2)+{\cdots}+h(n-1){\times}h(0)$

$h(n)=\frac{h(n-1){\times}(4{\times}n-2)}{n+1}$

$h(n)=C_{2{\times}n}^{n}-C_{2{\times}n}^{n-1}$

$h(n)=\frac{C_{2{\times}n}^{n}}{n+1}$

最后两个通项公式在组合数学中较为常用,关于最后两个通项公式的推倒,我简单推一下,其实就是对组合数公式的应用

$h(n)=C_{2{\times}n}^{n}-C_{2{\times}n}^{n-1}$

   $=C_{2{\times}n}^{n}-\frac{(2{\times}n)!{\times}n}{n!{\times}n!{\times}(n+1)}$

   $=C_{2{\times}n}^{n}-C_{2{\times}n}^{n}{\times}\frac{n}{n+1}$

   $=\frac{1}{n+1}{\times}C_{2{\times}n}^{n}$

最常见模型

常见的卡特兰数最基本最常见的模型是进出栈问题,也就是对于n个数,求其不同出栈次序的方案数,下面来自学长的解释

关键在于那个前缀和不小于零,很多题都可以简化为这种问题,对于卡特兰数这种进出栈模型,在下面还会提到另一种理解

简单应用

1.进出栈模型

2.二叉树计数

3.多边形划分

4.括号匹配

5.有限制的网格路径

关于这些,前方链接

简单例题

BZOJ3907网格

当$n=m$时,这道题就是一个裸的卡特兰数,向右看作进栈,向上看为出栈

那当$n>m$时呢?我们来考虑一下对于卡特兰数的另一种理解

我们将这道题化减为一个模型,给你$n$个1,$m$个0,要求一个$01$串,使得任意前k位中0的个数不少与1的个数,双倍经验,我们考虑用总的方案数减去不满足的方案数,总方案显然是$C_{n+m}^{m}$,现在我们考虑不满足要求的01串,前提是满足$n$个$1$,$m$个$0$,对于一个不合法$01$串,我们设在第$i$位上为1,且第一次出现1的个数-0的个数=1,那么此时假如我们把这个串的前$i$个位置,$01$取反,那在此时的串中就出现了$m+1$个0和$n-1$个1,我们发现这种相互转化的关系是唯一对应的,所以不合法的$01$串的方案数是$C_{n+m}^{m+1}$,所以最后的答案就是$C_{n+m}^{m}-C_{n+m}^{m-1}$,当$n=m$时,这个式子就是卡特兰数的通项公式

送一道还可以的练习题

原文地址:https://www.cnblogs.com/hzjuruo/p/11373035.html

时间: 2024-08-04 13:02:12

卡特兰数相关的相关文章

卡特兰数相关问题

一.什么是Catalan数 说到Catalan数,就不得不提及Catalan序列,Catalan序列是一个整数序列,其通项公式是 递推公式是 C(n) = C(1)*C(n-1) + C(2)*C(n-2) + ... + C(n-1)C(1),n>=2 我们从中取出的就叫做第n个Catalan数,前几个Catalan数如下: 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694

1023 Train Problem II(卡特兰数)

Problem Description As we all know the Train Problem I, the boss of the Ignatius Train Station want to know if all the trains come in strict-increasing order, how many orders that all the trains can get out of the railway. Input The input contains se

HDU-3240(卡特兰数+分解质因数后求逆元)

卡特兰数相关公式 : \(H_n = {C_{2n}^n \over n+1)}\) \(H_n = {(4n-2)\over n+1}\times H_{n-1}\) \(H_n = C_{2n}^n - C_{2n}^{n-1}\) $ H_n = \begin{cases} \sum_{i=1}^{n} H_{i-1} H_{n-i} & n \geq 2, n \in \mathbf{N_{+}}\ 1 & n = 0, 1 \end{cases} $ 因为 \(n\le 1000

卡特兰数(Catalan)

卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列.由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名,其前几项为 : 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796. 通项:f(n) = f(0)*f(n-1) + f(1)*f(n-2) + .......+ f(n-2)*f(1) + f(n-1)*f(0) n>=2 f(n)=f(n-1)*(4n-2)/(n+1) 应用场景:

Catalan数——卡特兰数

一.Catalan数的定义 令h(0)=1,h(1)=1,Catalan数满足递归式:h(n) = h(0)*h(n-1) + h(1)*h(n-2) + ... + h(n-1)*h(0)  (n>=2) 该递推关系的解为:h(n) = C(2n,n)/(n+1),n=0,1,2,3,... (其中C(2n,n)表示2n个物品中取n个的组合数) 二.问题描述 12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种? 问题分析: 我们先把这12个

hdoj 4828 卡特兰数取模

Grids Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 93    Accepted Submission(s): 25 Problem Description 度度熊近期非常喜欢玩游戏.这一天他在纸上画了一个2行N列的长方形格子. 他想把1到2N这些数依次放进去.可是为了使格子看起来优美,他想找到使每行每列都递增的方案.只是画了

NPU 2015年陕西省程序设计竞赛网络预赛(正式赛)F题 和谐的比赛(递推 ||卡特兰数(转化成01字符串))

Description 今天西工大举办了一场比赛总共有m+n人,但是有m人比较懒没带电脑,另外的n个人带了电脑.不幸的是,今天机房的电脑全坏了只能用带的电脑,一台电脑最多两人公用,确保n>=m.但是大家来的时间不同,随机次序来机房,带电脑的人直接准备比赛而没带电脑的人需要向带电脑并还没和别人公用的人求助(当然会答应).但是,如果不存在带电脑并还没和别人公用的人,那他就要等了,等是很让人头疼的,这就不和谐了,当然假如没有这样的情况发生比赛是很和谐的. Input 输入多组数据,每组数据只有一行m(

hdu 5177 (1e18范围的卡特兰数)

hdu 5177 (1e18范围的卡特兰数) 题意: 求第n个卡特兰数,模3814697265625 (5^18) 限制: 有20组数据,1 <= n <= 1e18 思路: 1. 卡特兰数的表达式: ans = 1/(n+1) * C(2*n,n) -> ans = 1/(n+1) * (2n)! / n! / n!    ---1式 2. 因为要模5^18,求逆元要求互质,所以先把"1式"中的因子5全部去掉 3. 然后看不含因子5的阶乘,f(n!) 4. 设g(x

hdu 4828 Grids(拓展欧几里得+卡特兰数)

题目链接:hdu 4828 Grids 题目大意:略. 解题思路:将上一行看成是入栈,下一行看成是出栈,那么执着的方案就是卡特兰数,用递推的方式求解. #include <cstdio> #include <cstring> typedef long long ll; const int N = 1000005; const ll MOD = 1e9+7; ll dp[N]; ll extendGcd(ll a, ll b, ll& x, ll& y) { if (