#futurecontest2018quala. [future_contest_2018_qual_a]山型足し算
[future_contest_2018_qual_a]山型足し算
问题
给定一个 行 列的格子 。我们将左上角的格子位置定义为 。
这时,从左上角的格子向下走 步 ,向右走 步 的格子位置表示为 。
此外,每个格子上都写着一个整数,位置 上写着的整数记作 。
在这里,对于一个格子图,当所有格子上的整数都是 时称为“初始格子图”。
另外,对于一个格子图 ,定义“山形加法” 如下:
- 首先,指定山的中心位置为 ,山的高度为整数 。
- 然后将所有格子的 替换为 。
以一个 行 列的初始格子图 为例。
对于格子图 ,进行 次山形加法 后的格子图如下图所示。
图 山形加法的例子(空白的格子表示为 )。
给定格子图 是通过对 行 列的初始格子图进行 次山形加法生成的。
你的目标是找到一个尽可能接近格子图 的格子图的山形加法过程。
具体来说,首先,准备一个 行 列的初始格子图 。
然后,你可以对格子图 进行最多 次山形加法。
接下来,你的目标是找到一个使得格子图 和格子图 满足 的山形加法过程,并且尽量使得山形加法的次数最小化。
评分方法
每个测试用例的得分计算如下。
- 对于一个 行 列的初始格子图,根据你的程序输出的山形加法过程生成格子图 。
- 首先,作为基本分数,得到
分。
- 如果格子图 和格子图 上的整数在所有格子中均一致,则将山形加法的次数记作 ,得到 分作为奖励分。
问题整体的得分计算如下。
- 测试用例的数量是包括输入样例 在内的 个。这 个测试用例的总分数是程序的得分。
- 如果所有测试用例的状态不是 "AC",则除了 "example_01" 之外的所有测试用例的得分都为 。
约束条件
- 格子图 是通过对初始格子图进行 次山形加法生成的。
输入
输入以以下格式给出。
... ... : ...
输出
以以下形式输出能够尽可能接近格子图 的格子图 的山形加法过程。
:
第 行输出山形加法的次数 。
第 行输出第 次山形加法所用的参数 ,以空格分隔。
测试用例的生成方法
格子图 是通过对初始格子图进行 次山形加法生成的。
每次山形加法所用的参数 的约束
- 在范围 \[0,N-1\] 内随机选择一个均匀分布的随机数。
- 在范围 \[0,N-1\] 内随机选择一个均匀分布的随机数。
- 在范围 \[1,N\] 内随机选择一个均匀分布的随机数。
输入输出示例1
测试用例 "example_01" 对应输入输出示例1。测试用例 "example_01" 也将被评分。