CF1801A The Very Beautiful Blanket

题目描述

Kirill 想要编织一条非常漂亮的毯子,这条毯子由 $n \times m$ 个相同大小的正方形色块组成,每个色块有一种颜色。她为每种颜色分配了一个非负整数。因此,在本题中,这条毯子可以看作是一个 $n \times m$ 的 $B$ 矩阵,矩阵中的元素均为非负整数。 Kirill 认为毯子非常漂亮,当且仅当对于 $B$ 矩阵的每一个 $4 \times 4$ 的子矩阵 $A$,都满足以下条件: - $A_{11} \oplus A_{12} \oplus A_{21} \oplus A_{22} = A_{33} \oplus A_{34} \oplus A_{43} \oplus A_{44}$, - $A_{13} \oplus A_{14} \oplus A_{23} \oplus A_{24} = A_{31} \oplus A_{32} \oplus A_{41} \oplus A_{42}$, 其中 $\oplus$ 表示[按位异或运算](https://en.wikipedia.org/wiki/Exclusive_or)。 Kirill 请你帮她编织一条既非常漂亮又尽可能多彩的毯子! 她会给你两个整数 $n$ 和 $m$。 你的任务是生成一个 $n \times m$ 的矩阵 $B$,使其满足“非常漂亮”的条件,并且矩阵中不同数字的数量最大。

输入格式

输入的第一行包含一个整数 $t$($1 \le t \le 1000$),表示测试用例的数量。 每个测试用例占一行,包含两个整数 $n$ 和 $m$($4 \le n,\, m \le 200$),表示矩阵 $B$ 的大小。 保证所有测试用例中 $n \cdot m$ 的总和不超过 $2 \times 10^5$。

输出格式

对于每个测试用例,第一行输出一个整数 $cnt$($1 \le cnt \le n \cdot m$),表示矩阵中不同数字的最大数量。 接下来输出 $n$ 行,每行 $m$ 个整数,表示矩阵 $B$($0 \le B_{ij} < 2^{63}$)。如果存在多个满足条件的矩阵,输出任意一个均可。 可以证明,如果存在一个最优不同数字数量的矩阵,则一定存在一个满足 $0 \le B_{ij} < 2^{63}$ 的矩阵。

说明/提示

在第一个测试用例中,只有 4 个 $4 \times 4$ 的子矩阵。考虑左上角与矩阵 $B$ 的左上角重合的那个子矩阵: $$ \left[ \begin{array}{cccc} 9740 & 1549 & 9744 & 1553 \\ 1550 & 1551 & 1554 & 1555 \\ 10252 & 2061 & 10256 & 2065 \\ 2062 & 2063 & 2066 & 2067 \\ \end{array} \right] $$ $9740 \oplus 1549 \oplus 1550 \oplus 1551 = 10256 \oplus 2065 \oplus 2066 \oplus 2067 = 8192$; $10252 \oplus 2061 \oplus 2062 \oplus 2063 = 9744 \oplus 1553 \oplus 1554 \oplus 1555 = 8192$。 因此,所选子矩阵满足条件。同理,可以验证其他三个子矩阵也满足条件。 由 ChatGPT 4.1 翻译