ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

「数学」卡特兰数

2021-07-14 12:31:33  阅读:183  来源: 互联网

标签:frac dbinom Cat 数学 序列 出栈 2n 卡特兰


洛谷P1044 [NOIP2003 普及组] 栈

定义

经典问题:出栈序列数

由栈性质可得,某一时刻总操作的入栈数不能少于出栈数,若将入栈视为\(+1\),出栈视为\(-1\),则任意时刻该序列前缀和不能小于零,且\(+1\)与\(-1\)总数相等(均为\(n\)个

如何求序列方案数

公式

易得,不剔除非法序列的情况下,序列总方案数为\(\dbinom{2n}{n}\)

对于任意非法序列,例如:

\[+1,-1,-1,+1,+1,-1 \]

若找到最先处于非法状态的位置(前缀和小于零的位置),将该位置(例子中的第三个)以及之前的数字全部反转,则会得到一个由\(n+1\)个\(+1\)和\(n-1\)个\(-1\)构成的序列

\[-1,+1,+1,+1,+1,-1 \]

反转后的序列在第一个前缀和大于零的位置反转可得到反转前的序列,所以每个非法序列和\(n+1\)个\(+1\)与\(n-1\)个\(-1\)构成的序列一一对应

由此得到合法序列数

\[Cat_n=\dbinom{2n}{n}-\dbinom{2n}{n-1}=\frac{\dbinom{2n}{n}}{n+1} \]

可以推出递推式

\[Cat_1=1,Cat_n=\frac{\dbinom{2n}{n}}{n+1}=\frac{\dbinom{2n-2}{n-1}*\frac{2n*(2n-1)}{n*n}}{n+1}=\frac{\dbinom{2n-2}{n-1}}{n}*\frac{2n*(2n-1)}{n*(n+1)}=Cat_{n-1}*\frac{4n-2}{n+1} \]

还可以拆开

\[Cat_n=\frac{\prod(4*i-2)}{(n+1)!} \]

另一种形式:

\[Cat_n=\sum_{i=1}^{n}Cat_{i-1}*Cat_{n-i} \]

若枚举最后一个出栈点的编号\(i\),那么在\(i\)入栈之前,前\(i-1\)个数字必定已经出栈,方案数为\(Cat_{i-1}\),在\(i\)出栈前,后\(n-i\)个数字也已经出栈,方案为\(Cat_{n-i}\)

由于没有除法,写高精方便,且遇到该形式的递推式可以归纳到卡特兰数

用法

输入\(3\)输出\(5\)即为卡特兰数

待更

拓展

\(n\)个\(+1\),\(m\)个\(-1,(n≥m)\),求任意前缀和不小于零的方案数

易证

\[ans=\dbinom{n+m}{m}-\dbinom{n+m}{n+1} \]

标签:frac,dbinom,Cat,数学,序列,出栈,2n,卡特兰
来源: https://www.cnblogs.com/knife-rose/p/15010274.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有