卡特兰数(模板公式) buy the ticket

首先了解一下卡特兰数:

  • 概念:卡特兰数是一种经典的组合数,经常出现在各种计算中,其前几项为 : 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, ...
  • 它的应用:参考博客http://lanqi.org/skills/10939/ 
  1. 对于进出栈问题,我的理解是:......看了好久看不懂,以后再看吧。先死记硬背!!! 
  • 总排数:C(n,2n)种
  • 不合法排数:C(n+1,2n)种。
  • 合法:C(n,2n)-C(n+1,2n)=C(n,2n)/(n+1)种。

   2.买票问题,题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1133

     就是进出栈问题*m!*n!,因为不同的人买票是不同的。故:

  •     总排数:m!×n!×C(m,m+n)种。
  •     不合法:m!×n!×C(m+1,m+n) 种。
  •     合法:m!×n!×(C(m,m+n)−C(m+1,m+n))= (m+n)!×(m−n+1)/(m+1)种。
  • 证明:(这里我也没怎么看得懂)


    (1) 对于一个m个0,n个1的不合法序列,设其最小不合法子列为[0,a).,其中有x+1个1, x个0(1和0的个数只相差1由“最小性”保证)。则剩余子列中(n-x-1)个1, (m-x)个0. 将剩余子列翻转,翻转剩余子列有(n-x-1)个0, (m-x)个1. 如此得到的序列1的个数=(x+1) + (m-x)=m+1, 0的个数=(x) + (n-x-1)=n-1.

    (2) 对于一个m+1个1,n-1个0的序列,必然存在一个从0开始的子列,其中1的个数比0的个数多1。将这个子列作为“不合法子列”(x+1个1, x个0),将剩余子列( (m-x)个1, (n-x-1)个0)翻转得到翻转子列( (m-x)个0, (n-x-1)个1),与“不合法子列”拼接可以得到一个m个0, n个1的序列,由于该序列存在前述“不合法子列”,该序列是不合法的

    由此我们证明了任意一个m个0,n个1的不合法序列(m>=n)与一个m+1个1,n-1个0的序列一一对应,因此计算不合法序列个数也就是计算m+1个1,n-1个0的序列个数=C(m+1)(m+n)
     

 

     

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值