#chokudai005a. [chokudai005_a]カラフルパネル

[chokudai005_a]カラフルパネル

问题描述

NNNN 列共 N×NN × N 个正方形的面板。你将使用这些面板进行游戏。

游戏的目标是尽量使所有面板的颜色都相同。初始时,每个面板都被涂上了从颜色 11 到颜色 KKKK 种颜色之一。

通过触摸一个面板,并将其变成任意颜色,你可以改变该面板的颜色。设触摸的面板颜色为 ii,想要变成的颜色为 jj。那么,从触摸的面板出发,只有上下左右相邻的颜色为 ii 的面板才会变成颜色 jj

这个游戏的最终得分可以通过以下计算公式得到:

  • 假设出现次数最多的颜色为 ii,每当颜色为 ii 的面板出现一次,得 100100 分。
  • 每触摸一次面板,失去 11 分。
  • 但是,如果总共触摸面板超过 1000010000 次,系统会崩溃,得 00 分。

给定面板的初始状态。输出触摸操作步骤,以获得尽可能高的得分。

注意,本问题中的输入是完全公开的,每个输入都有独立的通行证号id。你可以利用这一点来解决问题。

此外,C++判分器也已经公开。你也可以使用它进行验证。

约束条件

  • 11 ≤ id ≤ 5050
  • NN = 100100
  • KK = 99
  • SiS_i 是一个长度为 NN 的字符串,第 jj 个字符 Si,jS_{i,j}1~K 中的一个数字,表示第 ii 行、第 jj 列(记为 (i,j)(i,j))的面板颜色为 Si,jS_{i,j}
  • SS 中的字符选取概率相等且独立随机,范围是 1~K
  • 输入与此链接提供的zip文件相同。

输入

id NN KK S1S_1 S2S_2 : SNS_N

输出

按照以下格式输出结果。其中,QQ 是触摸面板的次数,Yi,Xi,CiY_i, X_i, C_i 分别表示第 ii 次触摸的面板的行索引 YiY_i、列索引 XiX_i(记为 (Yi,Xi)(Y_i, X_i)),以及要变成的颜色为 CiC_i

QQ Y1Y_1 X1X_1 C1C_1 Y2Y_2 X2X_2 C2C_2 : YQY_Q XQX_Q CQC_Q

你的分数将是对50个测试用例的得分之和。


输入示例 1

0 6 9
515795
153859
833597
333419
333121
533917

输出示例 1

2
5 5 1
5 2 1

这个示例输入是为了说明目的而使用的较小的输入。

面板的初始状态如下:

初期状態

然后按照输出中的步骤,触摸两次面板。

首先,将 (5,5)(5,5) 的面板颜色变为颜色 11。此时,在相邻面板中,只有原来颜色为 22 的面板不存在,因此只有该面板的颜色发生改变。

状態1

接下来,将 (5,2)(5,2) 的面板颜色改为颜色 11。此时,只要通过上下左右相邻的颜色为 33 的面板,就可以达到所有面板变成颜色 11 的目标,所以面板的颜色会发生以下改变。

状態2

在操纵了所有面板后,颜色出现最多的面板是颜色 11,共有 1818 个。

因此,得分为 18×1002=179818 × 100 - 2 = 1798