3112: 弹珠弹射

时间限制:1000 ms 内存限制:256 MB
上传者:
提交:17 通过:4

题目描述

弹珠弹射是一款锻炼记忆力的小游戏,玩家需要在短时间内记忆地图,然后依次回答每次询问。

如图(1)所示,界面上有一个 $n*n$ 的地图,为了方便描述游戏将地图边缘的 $4*n$ 个位置按照顺时针方向进行编号。地图内有一些挡板,这些挡板有两种放置方式,当弹珠碰到挡板后会发生弹性碰撞,随后弹珠的运动方向会发生变化(变化方向类似于镜面反射)。弹珠只会从地图边缘的 $4*n$ 个位置中选择一个进行发射,游戏每次询问即给定弹珠的发射位置,玩家需要立刻回答弹珠弹出地图时的位置。例如图(2)所示,弹珠从 3 号位置发出,最终从 13 号位置离开地图。

游戏开始时,玩家有 5 秒的时间记忆地图,时间结束后地图上的挡板将不再显示。接下来会有 $m$ 个询问,对于每次询问,玩家有两秒的时间去回答这个询问。

$hyd$ 认为这个游戏非常简单,他想在原来的基础上多问一种问题:询问在第 $x$ 号位置发射弹珠是否会在 $y$ 号位置弹出,如果不是,那么是否存在一种至多翻转一个挡板的方案使得其成立?如图(3)所示,当翻转了第四行第三列的挡板后,从 3 号位置发射的弹珠将会从 11 号位置弹出。

输入格式

第一行一个整数 $n\le 1000$。

接下来 $n$ 行,每行一个长度为 $n$ 的字符串,其中只包含 '0','/','\' 三种字符,字符 '0' 表示该位置不放置挡板,'/' 表示斜率为 1 的挡板,‘\' 表示为 -1 的挡板。

接下来一个整数 $m (1 \le 2*10^5)$,表示询问的个数。

接下来 $m$ 行,每行一个询问,询问格式有如下两种:

1. $1 ~ x$,询问从 $x$ 号位置发射弹珠,将会从哪一个位置弹出,保证 $1\le x \le 4 * n$。
2. $2 ~ x ~ y$,询问从 $x$ 号位置发射弹珠,是否可以在最多翻转一个挡板的前提下,从 $y$ 号位置弹出。

输出格式

对于每组测试数据,输出 $m$ 行,对于第一类询问输出一个整数,对于第二类询问,请输出 "YES" 或 "NO",表示是否可以在最多翻转一个挡板的前提下,满足询问要求。

输入样例 复制

4
//0\
/000
0000
0/\/
8
1 2
1 3
1 9
1 12
2 3 10
2 1 3
2 2 3
2 6 12

输出样例 复制

15
13
8
6
YES
NO
YES
YES

数据范围与提示