P16379 [NordicOI 2026] Backrooms 后台

题目背景

翻译来源:loj [#5710. 「NordicOI 2026」Backrooms](https://loj.ac/p/5710)。 2s,1024MB。 Subtask 0 为样例。

题目描述

巫师 Harry 喜欢烘焙。有一天,他发现了一个咒语,可以把他传送到「后台」(Backrooms,这个双关语只在瑞典语中成立),他感到非常高兴。然而,当他使用这个咒语时,他没有被传送到烘焙店,而是被传送到了一个无限大的网格中。网格中的每个单元格要么是空闲的,要么是堵塞的。在网格中,你可以向上下左右四个方向移动到相邻且未堵塞的单元格。走了一会儿后,他注意到堵塞单元格的分布模式是周期性的。更准确地说,存在一个 $R \times C$ 的图案在无限重复。具体工作方式见下图。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/1b04r64r.png) ::: 为了逃离,他需要到达网格中的某个单元格。然而,他的传送魔法生疏了,所以他会问你 $Q$ 个问题,格式如下:「如果我传送到单元格 $(s_x, s_y)$,我能走到单元格 $(g_x, g_y)$ 吗?」

输入格式

第一行包含两个整数 $R$ 和 $C$ $(1 \leq R, C \leq 1000)$,表示网格的行数和列数。 接下来的 $R$ 行,每行包含一个长度为 $C$ 的字符串,由字符 `.` 和 `#` 组成。这些是网格的行。字符 `#` 表示该单元格已堵塞,字符 `.` 表示该单元格为空闲。 随后的一行包含整数 $Q$ $(1 \leq Q \leq 10^5)$,表示你需要回答的问题数量。 接下来的 $Q$ 行,每行包含四个整数 $s_x, s_y, g_x, g_y$ $(0 \leq s_x, s_y, g_x, g_y \leq 10^{12})$,表示问题的坐标。保证这些坐标处的单元格均未堵塞。

输出格式

对于每个问题,如果 Harry 能从单元格 $(s_x, s_y)$ 走到单元格 $(g_x, g_y)$,则输出 `Yes`,否则输出 `No`。

说明/提示

### 评分 详细子任务附加限制及分值如下表所示: | 子任务 | 分值 | 附加限制 | | :-: | :-: | :-: | | $1$ | $7$ | $R, C \leq 2$, $Q \leq 5$, $s_x, s_y, g_x, g_y \leq 500$ | | $2$ | $4$ | $R, C, Q \leq 5$, $s_x, s_y, g_x, g_y \leq 500$ | | $3$ | $8$ | $R, C, Q \leq 5$, $s_x, s_y, g_x, g_y \leq 10^5$ | | $4$ | $25$ | $R, C, Q \leq 5$ | | $5$ | $15$ | $R, C \leq 5$ | | $6$ | $21$ | $R, C \leq 25$ | | $7$ | $20$ | 无附加限制 | ### 样例解释 * 问题 $1$:Harry 从 $(2,4)$ 出发,想要移动到 $(4,3)$。为此,他可以向右、向下、向右移动。 * 问题 $2$:起点和终点被墙壁隔开,因此答案为 `No`。 * 问题 $3$:Harry 已经站在终点,所以他瞬间完成了任务。 * 问题 $4$:即使在非常远的地方,网格仍在继续。答案最终为 `Yes`。 * 问题 $5$:同样地,起点和终点被墙壁隔开。