题意简述
你有一个字符串,仅由 A,B
两种字符构成。长度 $n\le 10^5$。维护 $Q$ 次操作,格式为:1 L R
区间 $[L,R]$ 中,$A$ 变成 $B$,$B$ 变成 $A$。2 L R A B
你有两个数,初始是 $A$ 和 $B$。从 $L$ 遍历到 $R$ ,如果这一位是字符 A
,那么 $A=A+B$,否则 $B=A+B$,输出最后 $A$ 和 $B$ 变成什么样。
思路
线段树区间维护矩阵积,然后用 $[A,B]$ 左乘这个矩阵积,就能得到最后的 $A,B$。
关于交换操作:我们维护矩阵积的时候,维护取反后的矩阵积 (就是把 $A$ 变成 $B$ ,把 $B$ 变成 $A$ 后的矩阵积)。交换的时候,把两个矩阵积换一下,然后下传标记即可。
代码
1 |
|