#P10684. [COTS/CETS 2024] 分割 Segregacija

    ID: 10153 远端评测题 5000ms 512MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>线段树2024O2优化CEOI(中欧)COCI(克罗地亚)

[COTS/CETS 2024] 分割 Segregacija

题目背景

译自 Izborne Pripreme 2024 (Croatian IOI/CEOI Team Selection) D2T2。5s,512M\texttt{5s,512M}

请不要滥用本题评测。滥用本题评测将被封号。

题目描述

Pero 有一个包含 22 行和 NN 列的矩阵。矩阵中的每个格子里都有一个红球或蓝球。

Pero 的目标是重新排列矩阵中的球,使得所有蓝球位于矩阵的左上侧,所有红球位于右下侧。更为具体地说,重新排列后,不能存在一个红球位于某个蓝球的上方或左侧。

为了实现这个目标,Pero 会多次交换相邻的两个球。两个球是相邻的当且仅当它们所在的格子有公共边。 Pero 想知道达到目标所需的最少交换次数。

此外,Pero 会交换矩阵中的相邻两个球 QQ 次,并在每次变更后询问当前矩阵状态所需的最小交换次数。请帮助 Pero,输出初始矩阵下以及每次交换后所需的最小交换次数。

输入格式

第一行,两个整数 N,QN,Q,含义见题面。

接下来两行,每行一个长度为 NN 的字符串,描述这个矩阵。其中 C\texttt{C} 代表红球,P\texttt{P} 代表蓝球。

接下来 QQ 行,每行三个正整数 t,x,yt,x,y,描述一次交换操作。

  • t=1t=1 时,表示交换 (x,y),(x,y+1)(x,y),(x,y+1)
  • t=2t=2 时,表示交换 (x,y),(x+1,y)(x,y),(x+1,y)

保证交换的两个位置都在矩阵内。

输出格式

输出 (Q+1)(Q+1) 行,分别表示初始矩阵的答案和每次修改后的答案。

5 2
CPCPC
PCCPC
1 1 4
1 1 2
3
4
5
5 0
CPPCC
PPCCP
4
10 7
CCPPPCCPCP
PPPCCCPCCC
1 2 7
2 1 4
2 1 8
1 1 9
2 1 1
1 2 7
1 1 4
8
9
10
10
9
8
7
8

提示

样例解释

样例 11 解释:对于初始状态,只需要依次交换 (1,1),(2,1)(1,1),(2,1)(1,3),(1,4)(1,3),(1,4)(1,4),(2,4)(1,4),(2,4) 即可。

数据范围

对于 100%100\% 的数据,保证 1N1061\le N\le 10^60Q1060\le Q\le 10^6

子任务编号 分值 约束
11 77 N10N\le 10
22 1111 最多只有 1010C\texttt{C}
33 1717 N,Q500N,Q\le 500
44 1010 N,Q5000N,Q\le 5\, 000
55 1313 N100000,Q100N\le 100\, 000, Q\le 100
66 1515 t=2t=2
77 2727 无额外约束