特殊计数序列——Catalan数

Catalan数

前10项

\(1,1,2,5,14,42,132,429,1430,4862\)

(注:从第\(0\)项起)

计算式

  • \(C_n=\frac{1}{n+1}\dbinom{2n}{n}\)
  • \(C_{n+1}=\sum_{i=0}^nC_iC_{n-i}\)
  • \(C_n=\dbinom{2n}{n}-\dbinom{2n}{n-1}\)
  • \(C_n=\frac{4n-2}{n+1}C_{n-1}\)

组合意义

1、由\(n\)个\(+1\)和\(n\)个\(-1\)构成的\(2n\)项序列中,满足\(\forall k\in[1,2n],\sum_{i=1}^ka_i\geq 0\)的序列数量

大家都知道结论:\(C_n=\frac{1}{n+1}\dbinom{2n}{n}\),在这里给出证明

考虑从相反的方面进行考虑,即用总序列数\(\dbinom{2n}{n}\)减去不合法的序列数

对于每一个不合法的序列,必定存在一个最小的\(k\)使得\(\sum_{i=1}^k a_i<0\),也就是有\(\sum_{i=0}^{k-1}a_i=0\)且\(a_k=-1\)

很明显\(k\)是奇数

考虑将前\(k\)项取相反数,那么该序列变成了一个含有\(n+1\)个\(+1\)和\(n-1\)个\(-1\)的序列,容易知道一个不合法的原序列只会对应一个新序列

同理,在新序列中一定会存在一个\(k\)使得\(\sum_{i=0}^ka_i=1\),此时再一次取前\(k\)项的相反数,又会得到一个不合法的原序列

因此不合法的序列和新序列是一一映射的关系,而新序列的总数也就是\(\dbinom{2n}{n-1}\)

于是最终答案就是\(\dbinom{2n}{n}-\dbinom{2n}{n-1}=\frac{1}{n+1}\dbinom{2n}{n}\)

由这一条组合意义可以引申出许多本质一样的组合意义

  • 在网格图上从\((0,0)\)走到\((n,n)\),每次只走一个单位长度,不走回头路,且不穿过(可碰到)直线\(y=x\)的方案数。(向右:\(+1\),向上:\(-1\))
  • \(2n\)个人排队买票,票价5角,有\(n\)个人持有1元硬币,另\(n\)个人持有\(5\)角硬币,求不使用额外的\(5\)角钱的排队方案(\(5\)角:\(+1\),\(1\)元:\(-1\))

2、凸\(n+1\)边形被其内部不相交的对角线划分成三角形区域的方案数

这是上面的第二个式子\(C_{n+1}=\sum_{i=0}^nC_iC_{n-i}\),我们有\(f_n=\sum_{i=2}^{n-1}f_if_{n-i-1}\),故\(f_n=C_{n+2}\)

类似的还有

  • \(n\)个节点的不同的二叉树,考虑在中序遍历中根节点的位置即可

3、其它

如:[HNOI2009]有趣的数列

本质上和第一点是相同的,关键是对偶数位置的转化

原文地址:https://www.cnblogs.com/zhou2003/p/10780170.html

时间: 2024-10-08 19:25:24

特殊计数序列——Catalan数的相关文章

[Catalan数]1086 栈、3112 二叉树计数、3134 Circle

1086 栈 2003年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 栈是计算机中经典的数据结构,简单的说,栈就是限制在一端进行插入删除操作的线性表. 栈有两种最重要的操作,即pop(从栈顶弹出一个元素)和push(将一个元素进栈). 栈的重要性不言自明,任何一门数据结构的课程都会介绍栈.宁宁同学在复习栈的基本概念时,想到了一个书上没有讲过的问题,而他自己无法给出答案,所以需要你的帮忙 宁宁考虑的

Catalan数,括号序列和栈

全是入门的一些东西.基本全是从别处抄的. 栈: 支持单端插入删除的线性容器. 也就是说,仅允许在其一端加入一个新元素或删除一个元素. 允许操作的一端也叫栈顶,不允许操作的一端也叫栈底. 数个箱子相叠就可以认为是一个栈,只能在最顶端加入一个新箱子或拿走一个箱子. 栈中的元素遵循后进先出(last in first out,LILO)的规律.即:更早出栈的元素,应为更早入栈者. 这是一个演示: 奇数行为栈中元素(右端可以进行插入删除),元素以逗号隔开, EMPTY表示栈为空 偶数行为进行的操作 EM

Catalan数 &amp;&amp; 【NOIP2003】出栈序列统计

令h(1)=1, h(0)=1,catalan数满足递归式: h(n)=h(0)*h(n-1)+h(1)*h(n-2)+...+h(n-1)h(0) (n>=2) =C(2n, n)/(n+1) =h(n-1)*2(2n-1)/(n+1) 具体推导请百度,这里只需记得推导公式为h(n)=h(n-1)*2(2n-1)/(n+1)即可. 我们来说说这个的应用吧,从catalan数的定义递归定义可以看出,它是由自己 本身的一部分和n减去一部分 的和得到的,也就是说,有n个物品,1个物品进行操作1,n-

HDU3723-Delta Wave(Catalan数+组合计数)

Delta Wave Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 741    Accepted Submission(s): 243 Problem Description A delta wave is a high amplitude brain wave in humans with a frequency of 1 – 4

Catalan数

[问题描述]对于一个栈,已知元素的进栈序列,判断一个由栈中所有元素组成的排列的出栈序列. 有N个数,则代表入栈序列为1,2,3,4,5...,N.求所有可能的出栈序列和总数. 代码如下 #include<iostream> #include<vector> #include<algorithm> #include<string> #include<stdio.h> using namespace std; int N = -1; int sum

【64测试20161112】【Catalan数】【数论】【扩展欧几里得】【逆】

Problem: n个人(偶数)排队,排两行,每一行的身高依次递增,且第二行的人的身高大于对应的第一行的人,问有多少种方案.mod 1e9+9 Solution: 这道题由1,2,5,14 应该想到Catalan数,但是我却花了两个小时去找递推式. 首先 Catalan数 : 基本规律:1,2,5,14,42,132,.......... 典型例题: 1.多边形分割.一个多边形分为若干个三角形有多少种分法. C(n)=∑(i=2...n-1)C(i)*C(n-i+1) 2.排队问题:转化为n个人

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个

关于Catalan数

问题的由来:编号为 1 到 n 的 n 个元素,顺序的进入一个栈,则可能的出栈序列有多少种? 对问题的转化与思考:n 个元素进栈和出栈,总共要经历 n 次进栈和 n 次出栈.这就相当于对这 2n 步操作进行排列.问题等价于:n个1和n个0组成一2n位的2进制数,要求从左到右扫描,1的累计数不小于0的累计数,试求满足这条件的数有多少? 解答: 设P2n为这样所得的数的个数. 在2n位上填入n个1的方案数为 C(n 2n)不填1的其余n位自动填以数0.从C(n 2n)中减去不符合要求的方案数即为所求

(转载)Catalan数——卡特兰数

Catalan数--卡特兰数 今天阿里淘宝笔试中碰到两道组合数学题,感觉非常亲切,但是笔试中失踪推导不出来后来查了下,原来是Catalan数.悲剧啊,现在整理一下 一.Catalan数的定义令h(1)=1,Catalan数满足递归式:h(n) = h(1)*h(n-1) + h(2)*h(n-2) + ... + h(n-1)h(1),n>=2该递推关系的解为:h(n) = C(2n-2,n-1)/n,n=1,2,3,...(其中C(2n-2,n-1)表示2n-2个中取n-1个的组合数) 问题描