你在给机器人编写一个视觉程序。 每次机器人的摄像头拍下一张照片时,图像将以黑白图像的形式存储在机器人的内存中。 每张图像是由像素构成的
机器人可以用简单指令构成的程序来处理图像。 给出
下面描述机器人是如何运作的。
机器人的内存有足够多的存储单元,从
机器人的程序是一个指令的序列,这些指令用从
机器人共有四种指令:
:有唯一一个输入。若输入为 时,其输出为 ,否则为 。 :有一个或多个输入。其输出为 当且仅当输入全部为 。 :有一个或多个输入。其输出为 当且仅当输入中至少有一个 。 :有一个或多个输入。其输出为 当且仅当输入中 的个数是奇数。
如果两个黑色像素之间的距离正好为
实现方法
你需要实现以下函数:
void construct_network(int H, int W, int K)
:机器人摄像头所拍到的图像的尺寸。 :一个正整数。- 这个函数需要生成一个机器人的程序。对于机器人摄像头所拍到的每幅图像,该程序应判定图像中两个黑色像素之间的距离是否正好为
。
你可以通过调用如下函数来生成程序
int add_not(int N)
int add_and(int[] Ns)
int add_or(int[] Ns)
int add_xor(int[] Ns)
分别追加一条
(对于 而言):要追加的 指令的输入存储单元编号。 (对于 而言):要追加的 或 指令的输入存储单元的编号的数组。- 每次函数调用都会返回追加指令的输出存储单位的编号。对这些函数的连续调用将会返回从
开始的连续整数。
机器人的程序最多可以包含
当追加完最后一条指令后,函数
评测程序在评测你的程序时可能会出现以下错误信息:
:一个空数组被作为 或 的输入。 :给 或 提供了不正确(可能是负数)的存储单元编号作为输入。 :你的函数尝试添加多于 条的指令。 :程序中的指令一共读取了多于 个值。
评测程序示例
评测程序示例读取下述格式的输入:
- 第
行: - 第
行 : - 最后一行:
- 除第一行和最后一行外,每一行都表示了一幅含有两个黑色像素的图像。 记第
行上的图像为图像 。该图像中,一个黑色像素位于第 行及第 列上,令一个黑色像素位于第 行及第 列上。
评测程序首先调用
否则,评测程序示例将输出两部分内容。
首先,评测程序示例会以下列格式输出机器人程序所产生的输出:
第
其次,评测程序示例会以下列格式输出到当前目录下一个名为
第
在第
注意,
样例一
假设
情况一:黑色像素是
一种可行的方案是通过以下调用来构造机器人程序:
数据范围
测试包编号 | 限制与约定 | 分值 |
---|---|---|
10 | ||
11 | ||
11 | ||
15 | ||
12 | ||
保证像素 | 8 | |
14 | ||
无附加约定 | 19 |
对于所有测试数据,满足
时间限制:
空间限制:
如果交互库出现了问题请联系zhouyuyang