CF232E Quick Tortoise

题目描述

约翰·多伊拥有一块矩形田地,它是一个 $n \times m$ 的矩阵。我们假设田地的行从上到下编号为 $1$ 到 $n$,列从左到右编号为 $1$ 到 $m$。那么田地中第 $x$ 行第 $y$ 列的格子坐标为 $(x, y)$。 已知约翰的田地中有些格子涂成了白色,有些格子涂成了黑色。同时,约翰有一只乌龟,它可以在田地的白色格子上移动。乌龟可以从坐标为 $(x, y)$ 的白色格子移动到 $(x+1, y)$ 或 $(x, y+1)$,前提是目标格子同样为白色。换言之,乌龟只能沿田地上的白色格子向右或向下移动。乌龟不能移动出田地的边界。 此外,约翰有 $q$ 个查询,每个查询由四个整数 $x_1, y_1, x_2, y_2$($x_1 \leq x_2$,$y_1 \leq y_2$)描述。对于每个查询,约翰想知道乌龟是否可以从 $(x_1, y_1)$ 出发,经过若干次移动(每次都在白色格子内向右或向下移动),到达 $(x_2, y_2)$。

输入格式

第一行包含两个空格分隔的整数 $n$ 和 $m$($1 \leq n, m \leq 500$),表示田地的大小。 接下来的 $n$ 行中,每行包括 $m$ 个字符,“\#” 表示黑色格子,“.” 表示白色格子。第 $i$ 行的第 $j$ 个字符表示坐标为 $(i, j)$ 的格子。 之后一行包含一个整数 $q$($1 \leq q \leq 6\cdot 10^{5}$),表示查询的个数。接下来的 $q$ 行,每行包含四个空格分隔的整数 $x_1, y_1, x_2, y_2$($1 \leq x_1 \leq x_2 \leq n$,$1 \leq y_1 \leq y_2 \leq m$),依次表示起点和终点的坐标。保证每次查询的起点和终点均为白色格子。

输出格式

对于每一个查询,如果存在一种方式使乌龟能从 $(x_1, y_1)$ 只通过白色格子,且每步只能向右或向下,最终到达 $(x_2, y_2)$,则在单独的一行输出 “Yes”,否则输出 “No”。按照输入的查询顺序依次输出答案。

说明/提示

由 ChatGPT 5 翻译