#P16350. [2026年山东第二轮集训]判定问题

[2026年山东第二轮集训]判定问题

题目描述

给定一个无限大的二维网格,其中每个单元格要么是空的,要么是被阻挡的。

在网格中,你可以向上、下、左或右移动到相邻的非阻挡单元格。

在四处走动了一会儿后,你注意到被阻挡单元格的模式是周期性的。更准确地说,有一个 R×CR\times C 的模式在无限重复。具体工作方式请参见下图。

样例 1 的网络。 R×CR\times C 的循环节以红色标记。(0,0)(0,0) 未被阻挡,而 (1,1)(1,1) 被阻挡。第一个问题的坐标绘制在 (2,4)(2,4)(4,3)(4,3)。自然地,网格在绘制范围之外无限延伸。

给定 QQ 个问题,形式如下:“如果我传送到单元格 (sx,sy)(s_x,s_y) ,我能走到单元格 (tx,ty)(t_x,t_y) 吗?”

输入格式

第一行包含两个整数 RRCC (1R,C10001\le R,C \le 1000),表示网格的行数和列数。

接下来的 RR 行,每行包含一个长度为 CC 的字符串,由字符 .# 组成。字符 # 表示该单元格被阻挡,. 表示该单元格是空的。

随后是一行,包含整数 QQ (1Q1051\le Q\le 10^5),表示你需要回答的问题数量。

接下来的 QQ 行,每行包含四个整数 sx,sy,tx,tys_x,s_y,t_x,t_y (0sx,sy,tx,ty10120\le s_x,s_y,t_x,t_y\le 10^{12}),表示一个询问的坐标。保证这些坐标处的单元格均未被阻挡。

输出格式

对于每个询问,如果你可以从单元格 (sx,sy)(s_x,s_y) 走到单元格 (tx,ty)(t_x,t_y) ,则输出 Yes,否则打印 No

样例 1 输入

3 3
#.#
.#.
..#
5
2 4 4 3
0 0 2 1
0 0 0 0
900000002 900000004 900000004 900000003
2 1 1 2

样例 1 输出

Yes
No
Yes
Yes
No

数据范围

子任务 分值 附加限制
1 55 R,C2,Q5,sx,sy,tx,ty500R, C \leq 2, Q \leq 5, s_x, s_y, t_x, t_y \leq 500
2 1010 R,C,Q5,sx,sy,tx,ty500R, C, Q \leq 5, s_x, s_y, t_x, t_y \leq 500
3 1515 R,C,Q5,sx,sy,tx,ty105R, C, Q \leq 5, s_x, s_y, t_x, t_y \leq 10^5
4 2020 R,C,Q5R, C, Q \leq 5
5 1010 R,C5R, C \leq 5
6 1515 R,C25R, C \leq 25
7 2525 无附加限制