#P11543. [2024省队模拟]机器人

[2024省队模拟]机器人

【题目描述】

​ 给一个 n×mn \times m 的网格图,左上角坐标为 (1,1)(1,1),右下角坐标为 (n,m)(n,m)。其中有一部分格子上有障碍物。

​ 在网格的上方,有 aa 个机器人。可以将它们看作位于第 00 行,则第 ii 个机器人的坐标为 (0,pi)(0,p_i)

​ 在网格的下方,有 bb 个出口。可以将它们看作位于第 n+1n+1 行,则第 ii 个出口的坐标为 (n+1,ei)(n+1,e_i)

​ 机器人都只会向前走。初始时,每个机器人都朝向正下方。

​ 现在你可以在某些格子上放置转向器,每个格子上至多放置一台转向器。对于每台转向器,你可以任意选择两个不同的方向(上,下,左,右),将这两个方向用圆滑的轨道连接起来。注意这会将另外两个方向给堵住。比如,如果选择上和右两个方向,则上方来的机器人会转向右边,右方来的机器人会转向上面,而左方和下方来的机器人会被挡住而无法继续运动。

​ 现在你知道了这个网格的布局信息,以及每个机器人和出口的位置。你的任务是找到一种放置转换器的方案,使得每个机器人都会从出口离开该网格图,任意时刻机器人的坐标可以相同。

​ 由于机器人们没有配置检验方案合法的程序,并且你深得机器人们的信任,所以你只需要告诉它们是否存在这样的方案就好了。

【输入格式】

​ 从文件 robot.inrobot.in 中读入数据。

​ 本题为多组数据,输入数据第一行包含一个整数 TT,表示数据组数。

​ 对于每组数据:

​ 第一行包含四个整数 n,m,a,bn,m,a,b,分别表示网格长、宽,机器人个数和出口个数。

​ 接下来的 nn 行每行包含一个长度为 mm0101 串,描述了网格的布局。字符为 11 表示该位置有障碍物。

​ 接下来的一行包含 aa 个整数表示机器人的初始位置。

​ 接下来的一行包含 bb 个整数表示出口位置。

【输出格式】

​ 输出到文件 robot.outrobot.out 中。

​ 对于每组数据,输出一行 Yes\text{Yes}No\text{No},表示是否存在一种合法方案。

【样例输入1】

2
3 4 2 2
0000
0011
0000
1 4
2 4
3 4 2 2
0000
0011
0000
3 4
2 4

【样例输出1】

Yes
No

【样例1解释】

​ 对于第一组数据,一号机器人在 (3,1)(3,1) 转向右边,直到 (3,4)(3,4) 转向下面。二号机器人在 (1,4)(1,4) 转向左边,在 (1,2)(1,2) 转向下面。

​ 对于第二组数据,发现两只机器人至少有一个无法到达 (1,2)(1,2) ,所以不存在合法方案。

【样例2】

​ 见选手目录下的 robot/robot2.inrobot/robot2.inrobot/robot2.ansrobot/robot2.ans

【样例3】

​ 见选手目录下的 robot/robot3.inrobot/robot3.inrobot/robot3.ansrobot/robot3.ans

【样例4】

​ 见选手目录下的 robot/robot4.inrobot/robot4.inrobot/robot4.ansrobot/robot4.ans

【样例5】

​ 见选手目录下的 robot/robot5.inrobot/robot5.inrobot/robot5.ansrobot/robot5.ans

【样例6】

​ 见选手目录下的 robot/robot6.inrobot/robot6.inrobot/robot6.ansrobot/robot6.ans

【数据范围】

测试点编号 n,mn,m\le 特殊性质
1,21,2 100100 a=1a=1
3,43,4 b=1b=1
5,6,7,85,6,7,8 33
9,109,10 1010
11,12,13,14,15,16,17,18,19,2011,12,13,14,15,16,17,18,19,20 100100

​ 对于所有数据,保证:1T1001\le T \le 1001n,m1001 \le n,m\le 100n,m1000\sum n,\sum m \le 10001a,bm1 \le a,b \le m。保证机器人坐标互不相同,出口坐标互不相同。