AT_abc347_g.[ABC347G] Grid Coloring 2
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有一个 N×N 的网格,每个格子上写有一个 0 到 5 之间的整数。第 i 行第 j 列的格子(1≤i,j≤N)记作格子 (i,j),其中写着整数 Ai,j。
你可以对这个网格进行任意次如下操作(可以为 0 次):
- 选择一个写着 0 的格子 (i,j),以及一个 1 到 5 之间的整数 x,将该格子上的数改为 x。
操作结束后,格子 (i,j) 上的整数记作 Bi,j。定义网格的代价为所有相邻格子上的整数差的平方和。即,代价由下式给出:
i=1∑Nj=1∑N−1(Bi,j−Bi,j+1)2+i=1∑N−1j=1∑N(Bi,j−Bi+1,j)2
请你求出所有可能的操作结束后的网格中,代价最小的一个。
如果有多个代价最小的网格状态,输出其中任意一个即可。
输入格式
输入按以下格式从标准输入给出。
N A1,1 A1,2 … A1,N A2,1 A2,2 … A2,N
⋮
AN,1 AN,2 … AN,N
输出格式
输出 N 行。第 i 行(1≤i≤N)输出操作后使代价最小的 Bi,1,Bi,2,…,Bi,N,用空格分隔。
输入输出样例
输入#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
3 0 0 0 0 0 0 0 0 0
输出#2
0 0 0 0 0 0 0 0 0
输入#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
说明/提示
限制条件
- 1≤N≤20
- 0≤Ai,j≤5 (1≤i≤N,1≤j≤N)
- 输入均为整数
样例解释 1
给定的网格如下所示。

通过将网格变为右图的状态,代价为 22×6+12×18+02×16=42。
无法使代价小于 41,因此输出对应的 Bi,j 即为正确答案。
样例解释 2
初始状态的代价已经为 0,因此不进行操作即可达到最小代价。
由于操作结束后的网格状态中有多个代价最小的情况,输出如下也可以:
2 2 2
2 2 2
2 2 2
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?