P13264 [GCJ 2014 Finals] Checkerboard Matrix

题目描述

当感到无聊时,Mija 有时会玩一个关于矩阵的游戏。她尝试用尽可能少的操作次数将一个矩阵变换成另一个矩阵。对 Mija 来说,一次操作是指交换任意两行,或交换任意两列。 今天,Mija 有一个特别的矩阵 $\mathbf{M}$。这是一个 $2\mathbf{N} \times 2\mathbf{N}$ 的矩阵,其中每个元素都是 $0$ 或 $1$。Mija 决定尝试将 $\mathbf{M}$ 转换成一个**棋盘矩阵**,即矩阵中每一行与每一列的元素都按照 $0$ 和 $1$ 交替出现。 你能帮助 Mija 找出将 $\mathbf{M}$ 转换为棋盘矩阵所需的**最少交换次数**吗?如果无法转换成棋盘矩阵,请输出 `"IMPOSSIBLE"`。

输入格式

第一行是测试用例数量 $\mathbf{T}$。接下来是 $\mathbf{T}$ 个测试用例。 每个测试用例的第一行包含一个整数 $\mathbf{N}$。接下来的 $2\mathbf{N}$ 行,每行包含 $2\mathbf{N}$ 个字符(仅由 `'0'` 和 `'1'` 组成),表示矩阵 $\mathbf{M}$ 的一行。

输出格式

对于每个测试用例,输出一行,格式为 `"Case #x: y"`,其中 $x$ 是测试用例编号(从 $1$ 开始),$y$ 是最少的行交换与列交换次数之和;若无法转换成棋盘矩阵,输出 `"IMPOSSIBLE"`。

说明/提示

**样例解释** - 样例 1 中,矩阵本身已经是棋盘矩阵,无需任何操作。 - 样例 2 中,Mija 可以先交换第 1 列和第 2 列,再交换第 1 行和第 2 行,即可得到棋盘矩阵,总共 2 次操作。 - 样例 3 中,矩阵中的 $1$ 数量不够,无法排成棋盘矩阵,因而输出为 `"IMPOSSIBLE"`。 ## 限制条件 - $1 \leq \mathbf{T} \leq 100$ ### Small 数据集(4 分) - 时间限制:~~60~~ 3 秒 - $1 \leq \mathbf{N} \leq 10$ ### Large 数据集(9 分) - 时间限制:~~120~~ 5 秒 - $1 \leq \mathbf{N} \leq 10^3$ 翻译由 ChatGPT-4o 完成