题目描述
蛐蛐国准备在和它的一个邻国——蝈蝈国之间修一堵围墙。
围墙可以看成是一个长度为n的括号序列,与此同时还有一个长度为n的排列P,一个围墙被称为稳的,当且仅当:
1、这个括号序列是合法的。
2、构造一张n个点的图,当且仅当第i个位置是左括号时,点i向右Pi连边,最后形成的图必须满足每个点度数均为一。保证对于任意i有Pi
一个括号序列合法的定义如下:
1、空序列是合法的。
2、如果“A”是合法的,那么“(A)”也是合法的。
3、如果“A”和“B”都是合法的,那么“AB”也是合法的。例如“()()((()()))”是合法的,而“())(()”不是。
现在蛐蛐国的领导人想知道一种合法的修墙方案。
搜索
最暴力的搜索直接2n
假如一个东西是左括号就会有i连到p[i]。
p[i]一定是右括号,不然度数为2。
而p[p[i]]没和p[i]连边,所以p[p[i]]也是左括号。
如此我们发现,一个环只要确定一个其余全部确定。
因为一个环的大小至少为2,所以这样搜是2n2
然后我们发现大小为2的环,肯定是在左边那个填左括号,右边那个填右括号,把2判掉后,一个环的大小至少为4,所以这样搜是2n4
代码会补。