题目大意:
有一个长度为 \(2n\) 的 \(01\) 序列 \(a\),你可以对他进行一下操作(不超过10步)。
输出一个长度为 \(2n\) 的括号匹配字符串 \(s\),假设每个左括号 \(i\) 与右括号 \(p_{i}\) 匹配,那么将 \(a\) 中 \(i \sim p_{i}\) 翻转。
问能否将 \(a\) 变成全 \(0\)。
\(n \le 2 \times 10^5\)。
解题思路:
首先如果 1 的个数为奇数或者 \(a_{1} \ne a_{2n}\),显然是不可能有解的。
由于我们发现 \(1^1=0\),而这个题你可能会调整好了一些状态并被后续影响,所以我们希望他能类似只影响单点的操作。
而 \((( \dots ))\) 正好满足我们的需求。
但是这样只能让两两相邻的相同,考虑接下来怎么做。
因为一个点的异或次数之和奇偶性有关,所以我们可以让所有为 \(00\) 的相邻位置填 \(()\),\(11\) 填 \(((\) 或 \())\)。
那么这个题 3 步之内就做完了