卡特兰数及其变形

题面

求n个左括号,n个右括号组成的所有序列中刚好有m对不匹配的序列总数.

分析

解法一

打表打了2.5小时,几度自闭

解法二

易知m为0时答案即是卡特兰数,于是问题变成了合法序列个数的扩展问题。

回顾卡特兰数的证明,考虑折线法,从原点开始,遇见左括号斜向上画,遇见右括号斜向下画,所有线无论如何最后都会止于(2n,0)(因为向上向下次数一致),总数即是从原点到(2n,0)的方案数C(2n,n)(2n步中任取n步向上),m = 0要求左右括号完全匹配,则折线永远不能越过x轴(右括号过多不存在左括号与之匹配,不合要求)。要求合法序列个数可考虑合法 = 总数 - 不合法。刚才分析得越过x轴的线都不合法且不合法的线都必与y = -1相交,设第一次与y = -1相交的交点为k,将k以后的折线关于y = -1对称则必有(2n,0)对应(2n,-2),则不合法方案数转为从原点到(2n,-2),即等同于左括号比右括号少2个时的总方案数C(2n,n-1)(总数仍是2n,但有n-1个左括号,n+1个右括号)。

推广:由上分析知 至多m对不合法 = 总数 - 至少m + 1对不合法,
那么要求的 刚好m个 = 总数 - 至多m - 1对 - 至少m + 1对,
为C(2n,n) - (C(2n,n) - C(2n,n-m)) - C(2n,n-m-1);

推荐

组合数学—卡特兰数(catalan)的折线法证明

上一篇:【学习笔记】欧拉公式的证明


下一篇:@atcoder - AGC036F@ Square Constraints