#aBC347G. [ABC347G] Grid Coloring 2

[ABC347G] Grid Coloring 2

AT_abc347_g [ABC347G] Grid Coloring 2

题目描述

有一个 N×NN\times N 的网格,每个格子上写有一个 0055 之间的整数。第 ii 行第 jj 列的格子(1i,jN1\leq i,j\leq N)记作格子 (i,j)(i,j),其中写着整数 Ai,jA_{i,j}

你可以对这个网格进行任意次如下操作(可以为 00 次):

  • 选择一个写着 00 的格子 (i,j)(i,j),以及一个 1155 之间的整数 xx,将该格子上的数改为 xx

操作结束后,格子 (i,j)(i,j) 上的整数记作 Bi,jB_{i,j}。定义网格的代价为所有相邻格子上的整数差的平方和。即,代价由下式给出:

$$\sum_{i=1}^N\sum_{j=1}^{N-1}(B_{i,j}-B_{i,j+1})^2+\sum_{i=1}^{N-1}\sum_{j=1}^N(B_{i,j}-B_{i+1,j})^2$$

请你求出所有可能的操作结束后的网格中,代价最小的一个。

如果有多个代价最小的网格状态,输出其中任意一个即可。

输入格式

输入按以下格式从标准输入给出。

NN A1,1A_{1,1} A1,2A_{1,2} \ldots A1,NA_{1,N} A2,1A_{2,1} A2,2A_{2,2} \ldots A2,NA_{2,N}
\vdots
AN,1A_{N,1} AN,2A_{N,2} \ldots AN,NA_{N,N}

输出格式

输出 NN 行。第 ii 行(1iN1\leq i\leq N)输出操作后使代价最小的 Bi,1,Bi,2,,Bi,NB_{i,1},B_{i,2},\ldots,B_{i,N},用空格分隔。

输入输出样例 #1

输入 #1

5
0 2 1 0 4
4 0 0 0 2
3 1 0 3 0
1 0 0 0 0
0 0 2 0 5

输出 #1

3 2 1 2 4
4 2 2 2 2
3 1 2 3 3
1 1 2 3 4
1 1 2 3 5

输入输出样例 #2

输入 #2

3
0 0 0
0 0 0
0 0 0

输出 #2

0 0 0
0 0 0
0 0 0

输入输出样例 #3

输入 #3

10
1 0 0 3 0 0 0 0 0 0
1 0 0 4 0 1 0 5 0 0
0 0 0 0 0 0 2 0 3 0
0 0 2 0 0 0 4 0 0 3
0 3 4 3 3 0 3 0 0 5
4 1 3 4 4 0 2 1 0 0
2 0 1 0 5 2 0 1 1 5
0 0 0 5 0 0 3 2 4 0
4 5 0 0 3 2 0 3 5 0
4 0 0 5 0 0 0 3 0 5

输出 #3

1 2 3 3 3 2 3 4 4 4
1 2 3 4 3 1 3 5 4 4
2 2 2 3 3 2 2 3 3 3
2 2 2 3 3 3 4 3 3 3
3 3 4 3 3 3 3 2 3 5
4 1 3 4 4 3 2 1 2 4
2 2 1 4 5 2 2 1 1 5
3 3 3 5 4 3 3 2 4 5
4 5 4 4 3 2 3 3 5 5
4 4 4 5 4 3 3 3 4 5

说明/提示

限制条件

  • 1N201\leq N\leq 20
  • 0Ai,j5 (1iN,1jN)0\leq A_{i,j}\leq 5\ (1\leq i\leq N,1\leq j\leq N)
  • 输入均为整数

样例解释 1

给定的网格如下所示。

通过将网格变为右图的状态,代价为 22×6+12×18+02×16=422^2\times6+1^2\times18+0^2\times16=42
无法使代价小于 4141,因此输出对应的 Bi,jB_{i,j} 即为正确答案。

样例解释 2

初始状态的代价已经为 00,因此不进行操作即可达到最小代价。
由于操作结束后的网格状态中有多个代价最小的情况,输出如下也可以:

2 2 2
2 2 2
2 2 2

由 ChatGPT 4.1 翻译