感觉,非常高妙的随机化!
考虑怎么判定一个序列合法,将每种颜色的奇数位置看成左括号,偶数位置看成右括号,则一个序列合法当且仅当其括号序列合法。
现在带修,我们维护的东西需要满足如下性质:
- 可逆:将相邻奇数位的信息和偶数位的信息合并需要等于单位元。
- 有结合律:不然没有办法线段树维护。
- 没有交换律:形如 \(121^{-1}2^{-1}\) 的不能视作合法。
容易发现矩阵乘法满足这个信息的所有要求,因此只需要随机三个矩阵并求出其的逆,奇偶位置分别是原矩阵的它的逆。一个区间合法当且仅当其矩阵连乘积为单位矩阵。
仔细体会一下会发现这个东西几乎可以适用于所有区间修改,判断括号串合法的题目上,除了带上亿点常数。