标签:http 映射关系 大致 括号匹配 初始 不同 lan n+2 display
咕比赛写博客的我。哭哭。
在本篇文章的剩余部分中,我们定义\(C(n)\)为卡特兰数的第\(n\)项
翻阅了一堆文章,也没找到真正的定义,暂且拿这个充当定义:
\(C(n)\)表示,从原点出发,每次向x或y轴正方向移动1单位,到达点(n,n),且在移动过程中不越过第一象限平分线的移动方案数。
我们记\(C(n)\)为卡特兰数的第\(n\)项
\[C(n)= \left( \begin{matrix}2n \\ n\end{matrix} \right) - \left( \begin{matrix}2n \\ n + 1\end{matrix} \right)\]
首先根据组合数学,我们知道如果不考虑第一象限平分线的限制,方案数为\(\left(\begin{matrix}2n \\ n\end{matrix}\right)\)。
注意到任何一种非法的方案,都至少有一个点\(p\)碰到了直线\(y=x+1\),那么我们将这条路径在\(p\)点以上的在直线\(y=x+1\)以下的部分沿直线\(y=x+1\)镜像到直线\(y=x+1\)上。
看图理解:上图中的绿线为\(y=x+1\),红线为原非法路径在\(p\)上的部分,蓝线为镜像后的结果。
我们会发现任何一种非法方案都可以变换成(0,0)到(n-1,n+1)的一条路径,且存在一一映射关系,所以总方案数为:\(\left(\begin{matrix}2n \\ n\end{matrix}\right)-\left(\begin{matrix}2n \\ n+1\end{matrix}\right)\)
\[C(n)=\left(\begin{matrix}2n \\ n\end{matrix}\right)-\left(\begin{matrix}2n \\ n+1\end{matrix}\right)\]
\[=\frac{(2n)!}{n!n!}-\frac{(2n)!}{(n+1)!(n-1)!}\]
\[=\frac{1}{n+1}(\frac{(2n)!(n+1)}{n!n!}-\frac{(2n)!}{n!(n-1)!})\]
\[=\frac{1}{n+1}(\frac{(2n)!(n+1)}{n!n!}-\frac{(2n)!\times n}{n!n!})\]
\[=\frac{1}{n+1}\frac{(2n)!(n+1)-(2n)! \times n}{n!n!}\]
\[=\frac{1}{n+1}\frac{(2n)!}{n!n!}\]
\[=\frac{1}{n+1}\left(\begin{matrix}2n \\ n\end{matrix}\right)\]
\[C(n)=\frac{1}{n+1}\sum_{i=0}^n\left(\begin{matrix}n \\ i \end{matrix}\right)^2\]
\[C(n+1)=\sum_{i=0}^nC(i)C(n-i),\ C(0)=1\]
\[C(n+1)=\frac{2(2n+1)}{n+2}C(n),\ C(0)=1\]
首先背诵上述应用场景,然后记忆卡特兰数的前几项:1,1,2,5,14,42,132。
\(n+m\)个人排队买票,并且满足\(n \geq m\),票价为50元,其中n个人有且仅有一张\(50\)元钞票,m个人有且仅有一张\(100\)元钞票,初始时候售票窗口没有钱,问有多少种排队的情况数能够让大家都买到票。
如果\(n=m\)可以直接用Catalan数解决,也就是将有50元的人看成是上述应用中的左括号,有100元的人看成是右括号。
对与\(n>m\)的情况,假设所有人都可以买到票的情况数是\(A_{n,m}\),不能让每个人都买到的情况数是\(B_{n,m}\),设最早买不到票的人为\(p\),他一定手持100元且售票处没有50元,那么这时将前p个人的钱从50元变成100元,从100元变成50元(不考虑顺序,所以没有影响),这时候就有\(n+1\)个人有50元,\(m-1\)个有100元的,所以就得到\(B_{n,m}=\left(\begin{matrix}n+m \\ n+1\end{matrix}\right)\),那么\(A_{n,m}=\left(\begin{matrix}n+m \\ n\end{matrix}\right)-\left(\begin{matrix}n+m \\ n+1\end{matrix}\right)\)。
这正是应用了上文证明的"翻折"思想。
标签:http 映射关系 大致 括号匹配 初始 不同 lan n+2 display
原文地址:https://www.cnblogs.com/linzhengmin/p/11298140.html