P16134 [ICPC 2018 NAIPC] Recovery
题目描述
考虑一个 $n \times m$ 的 0-1 矩阵。例如,下面这个 $4 \times 4$ 矩阵:
$$
\begin{aligned}
1\ 1\ 1\ 1 \\
0\ 1\ 1\ 1 \\
0\ 1\ 1\ 1 \\
0\ 1\ 1\ 0
\end{aligned}
$$
我们可以计算每一行和每一列的偶校验。在这个例子中,行的校验结果为 $[0, 1, 1, 0]$,列的校验结果为 $[1, 0, 0, 1]$(如果某行或某列中 1 的个数为奇数,则校验结果为 1;如果为偶数,则校验结果为 0)。注意,第一行是第 1 行,最后一行是第 $n$ 行,最左边一列是第 1 列,最右边一列是第 $m$ 列。
假设我们丢失了原始矩阵,只保留了行和列的校验结果。我们能否恢复原始矩阵?遗憾的是,无法唯一地恢复原始矩阵,但在某些约束条件下,我们可以唯一地恢复一个符合条件的矩阵。首先,恢复出的矩阵必须包含尽可能多的 1。其次,在所有包含最多 1 的恢复矩阵中,选择将第 1 行、第 2 行、第 3 行……按顺序拼接后得到的二进制数最小的那个。
输入格式
每个输入包含单个测试用例。请注意,你的程序可能会在不同输入上多次运行。每个测试用例恰好包含两行。第一行包含一个字符串 $R$($1 \leq |R| \leq 50$),仅由字符 0 和 1 组成,按顺序表示行的校验结果。第二行包含一个字符串 $C$($1 \leq |C| \leq 50$),仅由字符 0 和 1 组成,按顺序表示列的校验结果。
输出格式
如果能够在给定约束下恢复原始矩阵,则输出 $|R|$ 行,每行恰好 $|C|$ 个字符,仅由 0 和 1 组成,表示恢复出的矩阵。如果无法恢复,则输出 $-1$。
说明/提示
翻译由 DeepSeek V3.2 完成