QOJ.ac

QOJ

実行時間制限: 4 s メモリ制限: 2048 MB 満点: 100

#7926. 巨型棋盘上的颜色反转

統計

给定一个 $n \times n$ 的棋盘状方格阵列。行从上到下编号为 $1$ 到 $n$,列从左到右编号为 $1$ 到 $n$。

初始时,棋盘的颜色分布如下:若 $i+j$ 为奇数,则第 $i$ 行第 $j$ 列的方格为黑色;若 $i+j$ 为偶数,则该方格为白色。

接下来将依次进行 $q$ 次颜色反转操作,每次操作为以下两种之一:

  • 行颜色反转:给定行号,反转该行所有方格的颜色。白色方格变为黑色,黑色方格变为白色。
  • 列颜色反转:给定列号,反转该列所有方格的颜色。白色方格变为黑色,黑色方格变为白色。

在每次操作后,需要统计棋盘上不同区域的数量。这里,“区域”定义为一组颜色相同且直接或间接相连的方格。若两个方格共享一条边,则称它们直接相连。

输入格式

输入包含一组测试数据,格式如下:

$n \ q$ $operation_1$ $\vdots$ $operation_q$

其中 $n$ 为行数和列数 ($1 \le n \le 5 \times 10^5$),$q$ 为操作次数 ($1 \le q \le 5 \times 10^5$)。接下来的 $q$ 行表示按顺序进行的操作,每种操作格式如下:

  • ROW i:对第 $i$ 行进行“行颜色反转”操作 ($1 \le i \le n$)。
  • COLUMN j:对第 $j$ 列进行“列颜色反转”操作 ($1 \le j \le n$)。

输出格式

输出 $q$ 行。第 $k$ 行应包含一个整数,表示第 $k$ 次操作后棋盘上区域的数量。

样例

样例输入 1

3 3
ROW 2
COLUMN 3
ROW 2

样例输出 1

3
2
6

样例输入 2

200000 2
ROW 1
ROW 1

样例输出 2

39999800000
40000000000

图 F.1. 样例输入 1 的示意图

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.