P10684 [COTS 2024] 分割 Segregacija
题目背景
译自 [Izborne Pripreme 2024 (Croatian IOI/CEOI Team Selection)](https://hsin.hr/pripreme2024/) D2T2。$\texttt{5s,512M}$。
**请不要滥用本题评测。滥用本题评测将被封号。**
题目描述
Pero 有一个 $2$ 行 $N$ 列的矩阵,每个格子里有一个红球或蓝球。
Pero 想要重排矩阵中的球,使得所有蓝球位于矩阵的左上侧,所有红球位于右下侧。更为具体地说,重排后,不能存在一个红球位于某个蓝球的上方或左侧。
为此,Pero 可以多次交换相邻的两个球。**两个球是相邻的当且仅当它们所在的格子有公共边。** Pero 想知道达到目标所需的最少交换次数。
此外,Pero 会交换矩阵中的相邻两个球 $Q$ 次,并在每次变更后询问当前矩阵状态所需的最小交换次数。请帮助 Pero,输出初始矩阵下以及每次交换后所需的最小交换次数。
输入格式
第一行,两个整数 $N,Q$,含义见题面。
接下来两行,每行一个长度为 $N$ 的字符串,描述这个矩阵。其中 $\texttt{C}$ 代表红球,$\texttt{P}$ 代表蓝球。
接下来 $Q$ 行,每行三个正整数 $t,x,y$,描述一次交换操作。
- $t=1$ 时,表示交换 $(x,y),(x,y+1)$;
- $t=2$ 时,表示交换 $(x,y),(x+1,y)$。
保证交换的两个位置都在矩阵内。
输出格式
输出 $(Q+1)$ 行,分别表示初始矩阵的答案和每次修改后的答案。
说明/提示
#### 样例解释
样例 $1$ 解释:对于初始状态,只需要依次交换 $(1,1),(2,1)$,$(1,3),(1,4)$,$(1,4),(2,4)$ 即可。
#### 数据范围
对于 $100\%$ 的数据,保证 $1\le N\le 10^6$,$0\le Q\le 10^6$。
| 子任务编号 | 分值 | 约束 |
|:-----:|:------:|:-------:|
| $1$ | $7$ | $N\le 10$ |
| $2$ | $11$ | 最多只有 $10$ 个 $\texttt{C}$ |
| $3$ | $17$ | $N,Q\le 500$ |
| $4$ | $10$ | $N,Q\le 5\, 000$ |
| $5$ | $13$ | $N\le 100\, 000, Q\le 100$ |
| $6$ | $15$ | $t=2$ |
| $7$ | $27$ | 无额外约束 |