P6751 [IOI 2019] 视觉程序

题目背景

[评测方式](https://www.luogu.com.cn/paste/5z13bn4l) [一些说明~~和扯淡~~](https://www.luogu.com.cn/paste/l6kcccs4)

题目描述

你在给机器人编写一个视觉程序。每次机器人的摄像头拍下一张照片时,图像将以黑白图像的形式存储在机器人的内存中。每张图像是由像素构成的 $H\times W$ 网格。图像的行从 $0$ 到 $H-1$ 编号,列从 $0$ 到 $W-1$ 编号。每张图像含有**恰好两个**黑色像素,其他像素均为白色。 机器人可以用简单指令构成的程序来处理图像。给出 $H$,$W$ 和一个正整数 $K$ 的值,你的目标是要编写一个函数,用来为机器人生成程序。该程序需要判定图像中两个黑色像素的距离是否正好为 $K$。这里,在第 $r_1$ 行及第 $c_1$ 列上的像素与第 $r_2$ 行及第 $c_2$ 列上的像素之间的距离定义为 $|r_1-r_2|+|c_1-c_2|$。 在这个式子中,$|x|$ 表示 $x$ 的绝对值,即当 $x\ge0$ 时,其值为 $x$,而当 $x

输入格式

输出格式

说明/提示

#### 样例 假设 $H=2$,$W=3$,$K=3$。在此情况下,两个黑色像素之间的距离为 $3$ 的图像只有两种。 ![](https://cdn.luogu.com.cn/upload/image_hosting/9fec7n4k.png) - 情况一:黑色像素是 $0$ 和 $5$。 - 情况二:黑色像素是 $2$ 和 $3$。 一种可行的方案是通过以下调用来构造机器人程序: 1. `add_and([0, 5])`,将加入一条指令,当且仅当图像符合情况一时其输出为 $1$。输出结果将保存在存储单元 $6$ 里。 1. `add_and([2, 3])`,将加入一条指令,当且仅当图像符合情况二时其输出为 $1$。输出结果将保存在存储单元 $7$ 里。 1. `add_or([6, 7])`,将加入一条指令,当且仅当上述两种情况之一成立时其输出为 $1$。 #### 数据范围 对于所有数据: - $1\le H,W\le200$; - $2\le H\cdot W$; - $1\le K\le H+W-2$。 详细子任务附加限制与分值如下表: | 子任务编号 | 附加限制 | 分值 | | :--------: | :----------------------------------------------------------: | :--: | | $1$ | $\max(H,W) \le 3$ | $10$ | | $2$ | $\max(H,W) \le 10$ | $11$ | | $3$ | $\max(H,W) \le 30$ | $11$ | | $4$ | $\max(H,W) \le 100$ | $15$ | | $5$ | $\min(H,W) = 1$ | $12$ | | $6$ | 每幅图像上位于第 $0$ 行且位于第 $0$ 列的那个像素是黑色的 | $8$ | | $7$ | $K = 1$ | $14$ | | $8$ | 没有任何附加限制 | $19$ |