【csp2019模拟赛tkh】T1_excatalan

<前言>

(这只是一个我们自己的模拟赛啊。。。)

大佬们可以看看题目。


<正文>

简要题意:

求n对括号匹配中恰好有m对失配的方案数。

S o l u t i o n Solution Solution

题外 话:

首先,我们发现n对括号恰好完全匹配的方案数就是卡特兰数,这个应该是一个常识了(然而我在考试的时候没想出来。。。)

再看看文件名,扩展卡特兰数,说明我们思路对了但是我们要的是恰好有m对失配的情况,这咋搞呢。

实际上看似不可做,在求卡特兰数的时候魔改一下公式就可以啦。

然而为什么呢?

有一种求卡特兰数的方法叫折线法。

这种方法有什么妙用呢?

我们知道一个卡特兰数的模型:在n*n矩阵上不过对角线的左下角到右上角的方案数就是第n项卡特兰数了。

还有一个模型是进出栈的问题,合法出栈顺序数。

我们把坐标轴倾斜一下,把对角线贴在x轴上,发现等价于不过x轴的,从原点到2n合法方案数。其中我们走的是一条折线,向上倾表示进栈,下斜表示一次出栈。

为什么是2n呢?具体我也不会证明,大概就是原本对角线是不能经过的,现在可以经过就要改变终点。

(以下内容参考这里

上面有图,可以帮助理解。

整个过程认为是从坐标(0,0)走到(2n,0)。因为栈内必须要有元素,所以,折线不能在x轴下方,这样才是合法的。

不合法的方案呢?就是跨过了x轴,但仍然最终到达了终点的方案。

好的现在我们引入了这个模型,那么根据一些小知识合法方案=总方案-非法方案

现在我们要求总方案

即2n次操作,操作种类为2,要求每种操作次数相同,那相当于一个组合数问题,即 ( 2 n ) ! n ! × n ! \frac {(2n)!}{n! \times n!} n!×n!(2n)!,也可以写成 ( n 2 n ) \binom{n}{2n} (2nn)

接下来考虑非法方案

即至少有一时刻折线处于x轴下方。

  • 对于任意跨越x轴的情况,必有将与 y = − 1 y=-1 y=1相交。

  • 找出第一个与 y = − 1 y=-1 y=1相交的点k,将k点以右的折线根据 y = − 1 y=-1 y=1对称(即操作1与操作2互换了)。可以发现终点最终都会从 ( 2 n , 0 ) (2n,0) 2n0对称到 ( 2 n , − 2 ) (2n,-2) 2n2。\

  • 由于对称总是能进行的,且是可逆的。我们可以得出所有跨越了x轴的折线总数是与从 ( 0 , 0 ) (0,0) 0,0 ( 2 n , − 2 ) (2n,-2) 2n,2的折线总数。

    而后者的操作2比操作1要多 0 − ( − 2 ) = 2 0-(-2)=2 02=2次。即操作1为n-1,操作2为n+1。

  • 总数为 ( n − 1 2 n ) \binom{n-1}{2n} (2nn1)

接下来减一下就可以发现卡特兰数的通项公式了。


本题题解:

讲了这么多,和这题有什么关系呢?

正常卡特兰数不能越过 y = 0 y=0 y=0线,相当于没有任何一次可以失配的机会。

本题所求的恰好m对失配,由折线法可以证明是 ( n − m 2 n ) − ( n − m − 1 2 n ) \binom{n-m}{2n}-\binom{n-m-1}{2n} (2nnm)(2nnm1)

就好像差分一样嘛!

这个推广恰好符合扩展卡特兰数,就是正解了。。(然而我考场上还是不会)


<后记>

AFO,没什么可说的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值