题面
$T1$
Solution
首先,我们需要明确一个事实:对每一段 $0/1$ 能填的数是固定的。
画图证明一下。
可以看出后面一段的最小值大于前面一段的最大值。然后对于所有的段,我们从后往前填入,可以发现,刚好是连续的一段。
所以我们只需要分开找出每一段的答案,再乘起来就行了。
通过打表或者构造双射的方法,我们可以发现答案就是 $Catalan$ 数,然后就可以$O(n)$ 解决了。
$Catalan$ 数
计算公式:
Code
1 |
|
首先,我们需要明确一个事实:对每一段 $0/1$ 能填的数是固定的。
画图证明一下。
可以看出后面一段的最小值大于前面一段的最大值。然后对于所有的段,我们从后往前填入,可以发现,刚好是连续的一段。
所以我们只需要分开找出每一段的答案,再乘起来就行了。
通过打表或者构造双射的方法,我们可以发现答案就是 $Catalan$ 数,然后就可以$O(n)$ 解决了。
计算公式:
1 | #include<bits/stdc++.h> |