【csp2019模拟赛tkh】T1_excatalan

时间:2019-11-13
本文章向大家介绍【csp2019模拟赛tkh】T1_excatalan,主要包括【csp2019模拟赛tkh】T1_excatalan使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

<前言>

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

大佬们可以看看题目。


<正文>

煎蛋的疑惑(excatalan) (excatalan.cpp/c/pas)

【题目描述】

煎蛋酱有 n 个左括号和 n 个右括号,她喜欢把这些括号匹配起来玩。
某天她把这些括号排成了一个序列。
她发现无论如何匹配,至少有 2*m 个括号会失配。
她对此感到很好奇,于是希望你告诉她,这样的括号序列有多少个?
 答案对 998244353 取模。

【输入格式】


从 excatalan.in 中读入数据
为一行两个整数 n 和 m
**【输出格式】**
输出到 excatalan.out 中
输出一行一个整数,代表答案。

【样例输入 1】
2 1
【样例输出 1】
3
【样例解释 1】

括号序列为:
(()) 至少失配 0 ×
()() 至少失配 0 ×
())( 至少失配 2 √
)(() 至少失配 2 √
)()( 至少失配 2 √
))(( 至少失配 4 ×

【样例输入 2,3,4】
见下发文件 excatalan2.in,excatalan3.in,excatalan4.in
【样例输出 2,3,4】
见下发文件 edcatalan2.ans,excatalan3.ans,excatalan4.ans
【数据规模与约定】

对于 16%的数据,满足 n,m<=9
对于 32%的数据,满足 n,m<=100
对于 52%的数据,满足 n,m<=1000
对于另外 20%的数据,满足 m=0
对于 100%的数据,满足 1<=n<=1000000,0<=m<=n

markdown的格式有些别扭,我也不会用如何美化,所以将就看看吧。

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

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

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

然而为什么呢?

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

这种方法有什么妙用呢?

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

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

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

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

(以下内容参考这里

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

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

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

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

现在我们要求总方案

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

接下来考虑非法方案

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

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

  • 找出第一个与\(y=-1\)相交的点k,将k点以右的折线根据\(y=-1\)对称(即操作1与操作2互换了)。可以发现终点最终都会从\((2n,0)\)对称到\((2n,-2)\)
  • 由于对称总是能进行的,且是可逆的。我们可以得出所有跨越了x轴的折线总数是与从\((0,0)\)\((2n,-2)\)的折线总数。

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

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

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


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

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

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

就好像差分一样嘛!

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


<后记>

AFO,没什么可说的

原文地址:https://www.cnblogs.com/zqytcl/p/11847273.html