#futurecontest2018quala. [future_contest_2018_qual_a]山型足し算

[future_contest_2018_qual_a]山型足し算

问题

给定一个 NNNN 列的格子 AA。我们将左上角的格子位置定义为 (0,0)(0,0)
这时,从左上角的格子向下走 ii(0iN1)(0 ≤ i ≤ N-1),向右走 jj(0jN1)(0 ≤ j ≤ N-1) 的格子位置表示为 (j,i)(j,i)
此外,每个格子上都写着一个整数,位置 (j,i)(j,i) 上写着的整数记作 Ai,jA_{i,j}

在这里,对于一个格子图,当所有格子上的整数都是 00 时称为“初始格子图”。
另外,对于一个格子图 PP,定义“山形加法” (X,Y,H)(X,Y,H) 如下:

  • 首先,指定山的中心位置为 (X,Y)(0X,YN1)(X,Y)\\ (0 ≤ X,Y ≤ N-1),山的高度为整数 H(1HN)H\\ (1 ≤ H ≤ N)
  • 然后将所有格子的 Py,xP_{y,x} 替换为 Py,x+max(0,HxXyY)P_{y,x} + max(0, H - |x-X| - |y-Y|)

以一个 8888 列的初始格子图 QQ 为例。
对于格子图 QQ,进行 33 次山形加法 (X,Y,H)=(1,2,5),(5,1,3),(6,6,2)(X,Y,H) = (1,2,5),(5,1,3),(6,6,2) 后的格子图如下图所示。

图 山形加法的例子(空白的格子表示为 00)。

给定格子图 AA 是通过对 NNNN 列的初始格子图进行 10001000 次山形加法生成的。
你的目标是找到一个尽可能接近格子图 AA 的格子图的山形加法过程。

具体来说,首先,准备一个 NNNN 列的初始格子图 BB
然后,你可以对格子图 BB 进行最多 10001000 次山形加法。
接下来,你的目标是找到一个使得格子图 BB 和格子图 AA 满足 的山形加法过程,并且尽量使得山形加法的次数最小化。

评分方法

每个测试用例的得分计算如下。

  • 对于一个 NNNN 列的初始格子图,根据你的程序输出的山形加法过程生成格子图 BB
  • 首先,作为基本分数,得到 分。
  • 如果格子图 AA 和格子图 BB 上的整数在所有格子中均一致,则将山形加法的次数记作 QQ,得到 1000Q1000-Q 分作为奖励分。

问题整体的得分计算如下。

  • 测试用例的数量是包括输入样例 11 在内的 5050 个。这 5050 个测试用例的总分数是程序的得分。
  • 如果所有测试用例的状态不是 "AC",则除了 "example_01" 之外的所有测试用例的得分都为 00

约束条件

  • N=100N=100
  • 0Ai,j100,0000 ≤ A_{i,j} ≤ 100,000
  • 格子图 AA 是通过对初始格子图进行 10001000 次山形加法生成的。

输入

输入以以下格式给出。

A0,0A_{0,0} A0,1A_{0,1} ... A0,N1A_{0,N-1} A1,0A_{1,0} A1,1A_{1,1} ... A1,N1A_{1,N-1} : AN1,0A_{N-1,0} AN1,1A_{N-1,1} ... AN1,N1A_{N-1,N-1}

输出

以以下形式输出能够尽可能接近格子图 AA 的格子图 BB 的山形加法过程。

QQ X1X_1 Y1Y_1 H1H_1 X2X_2 Y2Y_2 H2H_2 : XQX_Q YQY_Q HQH_Q

11 行输出山形加法的次数 Q(0Q1000)Q\\ (0≤Q≤1000)
1+i(1iQ)1+i \\ (1 ≤ i ≤ Q) 行输出第 ii 次山形加法所用的参数 (Xi,Yi,Hi)(X_i,Y_i,H_i),以空格分隔。

测试用例的生成方法

格子图 AA 是通过对初始格子图进行 10001000 次山形加法生成的。

每次山形加法所用的参数 (X,Y,H)(X,Y,H) 的约束

  • XX 在范围 \[0,N-1\] 内随机选择一个均匀分布的随机数。
  • YY 在范围 \[0,N-1\] 内随机选择一个均匀分布的随机数。
  • HH 在范围 \[1,N\] 内随机选择一个均匀分布的随机数。

输入输出示例1

点击下载输入输出文件

测试用例 "example_01" 对应输入输出示例1。测试用例 "example_01" 也将被评分。