#P14901. [ICPC 2018 Yokohama R] Ranks

    ID: 14820 远端评测题 3000ms 512MiB 尝试: 0 已通过: 0 难度: 8 上传者: 标签>2018线性代数高斯消元ICPC横浜

[ICPC 2018 Yokohama R] Ranks

Description

有限域 F2\mathbf{F}_2 由两个元素组成:0011F2\mathbf{F}_2 上的加法和乘法是模 22 的整数运算,定义如下。

+\boldsymbol{+} 0\mathbf{0} 1\mathbf{1}
0\mathbf{0} 1\mathbf{1}
1\mathbf{1} 0\mathbf{0}
×\boldsymbol{\times} 0\mathbf{0} 1\mathbf{1}
0\mathbf{0} 0\mathbf{0} 0\mathbf{0}
1\mathbf{1} 1\mathbf{1}

具有相同维数的一组向量 v1,,vk\mathbf{v}_1, \ldots, \mathbf{v}_k(在 F2\mathbf{F}_2 上)被称为线性无关,如果对于 c1,,ckF2c_1, \ldots, c_k \in \mathbf{F}_2,$c_1 \mathbf{v}_1 + \cdots + c_k \mathbf{v}_k = \mathbf{0}$ 等价于 c1==ck=0c_1 = \cdots = c_k = 0,其中 0\mathbf{0} 是零向量,即所有元素均为零的向量。

矩阵的是其列向量线性无关集合的最大基数。例如,矩阵 $\begin{bmatrix} 0 & 0 & 1 \\ 1 & 0 & 1 \end{bmatrix}$ 的秩是二;列向量 [01]\begin{bmatrix} 0 \\ 1 \end{bmatrix}[11]\begin{bmatrix} 1 \\ 1 \end{bmatrix}(第一列和第三列)是线性无关的,而所有三个列向量的集合不是线性无关的。注意,零矩阵的秩为零。

给定上述矩阵秩的定义,以下可能是一个有趣的问题:修改矩阵中的一个元素会如何改变矩阵的秩?为了研究这个问题,假设我们给定一个 F2\mathbf{F}_2 上的矩阵 AA。对于任意索引 iijj,令 A(ij)A^{(ij)} 为一个与 AA 相同的矩阵,除了第 (i,j)(i,j) 个元素被翻转(即从 00 变为 11 或从 11 变为 00)。

$$A^{(ij)}_{kl} = \begin{cases} A_{kl} + 1 & (k = i \text{ 且 } l = j) \\ A_{kl} & (\text{其他情况}) \end{cases}$$

在本问题中,我们关注矩阵 A(ij)A^{(ij)} 的秩。令 AA 的秩为 rrA(ij)A^{(ij)} 的秩为 r(ij)r^{(ij)}。你的任务是针对所有 (i,j)(i,j) 位置,在翻转该位置的元素后,判断秩的关系属于以下哪种可能性:(i) r(ij)<rr^{(ij)} < r,(ii) r(ij)=rr^{(ij)} = r,或 (iii) r(ij)>rr^{(ij)} > r

Input Format

输入包含单个测试用例,格式如下。

$$\begin{aligned} & n \; m \\ & A_{11} \ldots A_{1m} \\ & \vdots \\ & A_{n1} \ldots A_{nm} \end{aligned}$$

nnmm 分别是矩阵 AA 的行数和列数(1n10001 \leq n \leq 10001m10001 \leq m \leq 1000)。接下来的 nn 行中,按行列出 AA 的元素,元素之间没有空格。AijA_{ij} 是第 ii 行第 jj 列的元素,取值为 0011

Output Format

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

2 3
001
101
-0-
-00
5 4
1111
1000
1000
1000
1000
0000
0+++
0+++
0+++
0+++
10 10
1000001001
0000010100
0000100010
0001000001
0010000010
0100000100
1000001000
0000010000
0000100000
0001000001
000-00000-
0-00000-00
00-00000-0
+00000+000
00-0000000
0-00000000
000-00000-
0-000-0-00
00-0-000-0
+00000+000
1 1
0
+