P14901 [ICPC 2018 Yokohama R] Ranks

题目描述

有限域 $\mathbf{F}_2$ 由两个元素组成:$0$ 和 $1$。$\mathbf{F}_2$ 上的加法和乘法是模 $2$ 的整数运算,定义如下。 |$\boldsymbol{+}$|$\mathbf{0}$|$\mathbf{1}$| |:-:|:-:|:-:| |$\mathbf{0}$|$\mathbf{0}$|$\mathbf{1}$| |$\mathbf{1}$|$\mathbf{1}$|$\mathbf{0}$| |$\boldsymbol{\times}$|$\mathbf{0}$|$\mathbf{1}$| |:-:|:-:|:-:| |$\mathbf{0}$|$\mathbf{0}$|$\mathbf{0}$| |$\mathbf{1}$|$\mathbf{0}$|$\mathbf{1}$| 具有相同维数的一组向量 $\mathbf{v}_1, \ldots, \mathbf{v}_k$(在 $\mathbf{F}_2$ 上)被称为**线性无关**,如果对于 $c_1, \ldots, c_k \in \mathbf{F}_2$,$c_1 \mathbf{v}_1 + \cdots + c_k \mathbf{v}_k = \mathbf{0}$ 等价于 $c_1 = \cdots = c_k = 0$,其中 $\mathbf{0}$ 是零向量,即所有元素均为零的向量。 矩阵的**秩**是其列向量线性无关集合的最大基数。例如,矩阵 $\begin{bmatrix} 0 & 0 & 1 \\ 1 & 0 & 1 \end{bmatrix}$ 的秩是二;列向量 $\begin{bmatrix} 0 \\ 1 \end{bmatrix}$ 和 $\begin{bmatrix} 1 \\ 1 \end{bmatrix}$(第一列和第三列)是线性无关的,而所有三个列向量的集合**不是**线性无关的。注意,零矩阵的秩为零。 给定上述矩阵秩的定义,以下可能是一个有趣的问题:修改矩阵中的一个元素会如何改变矩阵的秩?为了研究这个问题,假设我们给定一个 $\mathbf{F}_2$ 上的矩阵 $A$。对于任意索引 $i$ 和 $j$,令 $A^{(ij)}$ 为一个与 $A$ 相同的矩阵,除了第 $(i,j)$ 个元素被翻转(即从 $0$ 变为 $1$ 或从 $1$ 变为 $0$)。 $$ A^{(ij)}_{kl} = \begin{cases} A_{kl} + 1 & (k = i \text{ 且 } l = j) \\ A_{kl} & (\text{其他情况}) \end{cases} $$ 在本问题中,我们关注矩阵 $A^{(ij)}$ 的秩。令 $A$ 的秩为 $r$,$A^{(ij)}$ 的秩为 $r^{(ij)}$。你的任务是针对所有 $(i,j)$ 位置,在翻转该位置的元素后,判断秩的关系属于以下哪种可能性:(i) $r^{(ij)} < r$,(ii) $r^{(ij)} = r$,或 (iii) $r^{(ij)} > r$。

输入格式

输入包含单个测试用例,格式如下。 $$ \begin{aligned} & n \; m \\ & A_{11} \ldots A_{1m} \\ & \vdots \\ & A_{n1} \ldots A_{nm} \end{aligned} $$ $n$ 和 $m$ 分别是矩阵 $A$ 的行数和列数($1 \leq n \leq 1000$,$1 \leq m \leq 1000$)。接下来的 $n$ 行中,按行列出 $A$ 的元素,元素之间没有空格。$A_{ij}$ 是第 $i$ 行第 $j$ 列的元素,取值为 $0$ 或 $1$。

输出格式

输出 $n$ 行,每行包含 $m$ 个字符。第 $i$ 行第 $j$ 个位置的字符必须是 $-$(减号)、$0$(零)或 $+$(加号)。它们分别对应问题描述中的可能性 (i)、(ii) 和 (iii)。