CF1521E Nastia and a Beautiful Matrix
题目描述
你喜欢数字,对吧?Nastia 有很多数字,她想和你分享!是不是很棒?
设 $a_i$ 表示你拥有的数字 $i$ 的个数($1 \le i \le k$)。
一个 $n \times n$ 的矩阵被称为美丽矩阵,如果它包含了你拥有的所有数字,并且对于原矩阵的每个 $2 \times 2$ 子矩阵都满足:
1. 被填充的格子数不超过 $3$;
2. 每条对角线上的数字都不相同。
请构造一个最小尺寸的美丽矩阵。
输入格式
第一行包含一个整数 $t$($1 \le t \le 10\,000$)——表示测试用例的数量。
每个测试用例的第一行包含两个整数 $m$ 和 $k$($1 \le m, k \le 10^5$)——Nastia 给你的数字总数和数组 $a$ 的长度。
每个测试用例的第二行包含 $k$ 个整数 $a_1, a_2, \ldots, a_{k}$($0 \le a_i \le m$,且 $a_1 + a_2 + \ldots + a_{k} = m$),其中 $a_i$ 表示你拥有的数字 $i$ 的个数。
保证每个测试用例中 $m$ 和 $k$ 的和不超过 $2 \cdot 10^5$。
输出格式
对于每个测试用例,输出一个整数 $n$——美丽矩阵的尺寸。
接下来 $n$ 行,每行输出 $n$ 个整数 $b_{i, j}$($0 \le b_{i, j} \le k$;若该位置为空,则输出 $b_{i, j} = 0$)——你构造的美丽矩阵 $b$。
说明/提示
注意,本题中 $0$ 表示空白格,不是数字。
第一个测试用例的可能答案示例:
$\begin{array}{cc} 1 & 1 \\ 4 & 0 \\ \end{array} \hspace{0.5cm} \begin{array}{cc} 1 & 4 \\ 1 & 0 \\ \end{array} \hspace{0.5cm} \begin{array}{cc} 4 & 0 \\ 1 & 1 \\ \end{array}$
第一个测试用例的不合法矩阵示例:
$\begin{array}{cc} 1 & 0 \\ 4 & 1 \\ \end{array} \hspace{0.5cm} \begin{array}{cc} 4 & 1 \\ 7 & 1 \\ \end{array} \hspace{0.5cm} \begin{array}{cc} 1 & 0 \\ 4 & 0 \\ \end{array}$
第二个测试用例的不合法矩阵示例:
$\begin{array}{cc} 3 & 4 & 0 & 2 & 2 \\ 3 & 2 & 3 & 3 & 0 \\ 0 & 1 & 0 & 0 & 0 \\ 3 & 0 & 0 & 0 & 0 \\ 2 & 1 & 3 & 3 & 3 \\ \end{array}$
除了左上角的子矩阵包含了 $4$ 个数字外,其他都没问题。
由 ChatGPT 4.1 翻译