P16010 [CCO 2016 Day 2] O Canada 哦!加拿大
题目描述
题目中,一个*网格*是一个 $N$ 行 $N$ 列的方格阵列,每个格子要么是红色,要么是白色。
有些网格彼此*相似*。当且仅当可以通过一系列*操作*,将网格 $A$ 变换成网格 $B$,这两个网格才算相似。一次操作是选中网格中的一个 $2$ 行 $2$ 列的正方形区域,将该区域内所有格子的颜色全部翻转(红变白,白变红)。
现在给你 $G$ 个网格,数一数有多少对网格是相似的。(正式来说,把网格编号从 $1$ 到 $G$,然后统计所有满足 $(i, j)$ 的元组个数,使得网格 $i$ 和网格 $j$ 是相似的。)
输入格式
第一行输入两个整数 $N\ (2 \le N \le 10)$,表示网格的大小。第二行输入两个整数 $G\ (2 \le G \le 10\,000)$,表示网格的数量。接下来有 $N \cdot G$ 行,每行有 $N$ 个字符,每个字符是 `R` 或 `W`,代表该格子的颜色(红或白)。其中,第一批 $N$ 行描述第一个网格,接下来的 $N$ 行描述第二个网格,以此类推。
本题满分 $25$ 分,其中 $12$ 分的测试数据满足 $2 \le G \le 10$。
输出格式
输出相似网格对的数量。
说明/提示
题目中给了两个网格,它们相似,因为第一个网格可以通过一次操作(选中整个 $2$ 行 $2$ 列的正方形区域)变成第二个网格。
翻译来源:GPT 4.1 mini。