#P7589. 黑白棋(2021 CoE-II B)
黑白棋(2021 CoE-II B)
题目描述
和 正在玩一种称为“黑白棋”的游戏。该游戏的规则如下:
-
游戏在直角坐标系中进行。
-
执黑棋, 执白棋。
-
初始时,在直角坐标系中任选 条与 轴平行的直线,直线在 轴上的截距均为整数,且互不相同。 在每条直线上都会放置一枚黑棋, 在每条直线上都会放置一枚白棋,棋子位置的 坐标值均为整数。在同一条直线上的两枚棋子位置不会相同。
-
和 轮流走棋, 总是先走棋。每名玩家在走棋时,先选择一条直线,然后沿着直线移动该条直线上己方颜色的棋子。
-
每个玩家可以将自己的棋子向着靠近对方棋子的方向一次性移动若干整数单位距离,称之为前进。每个玩家也可以向着远离对方棋子的方向一次性移动若干整数单位距离,称之为后退。只要在前进时不跨过对方的棋子,也不使黑棋和白棋的位置发生重叠,前进的最远距离不限,但是前进的距离至少为 ,如果无法满足前述条件,则玩家不能执行前进操作。为了避免玩家反复后退导致游戏无法结束,在一局游戏中,某个玩家执行后退操作的总次数不能超过 次。与此同时,为了防止游戏区域太大以致在显示游戏状态上造成不便,每次后退的距离至少为 ,但不能超过 。如果无法满足前述条件,玩家不能执行后退操作。
-
玩家在轮到自己走棋时,如果能够执行操作就必须执行一次操作,此操作可以是前进操作,也可以是后退操作(如果未超出后退次数的限制)。
-
如果某个玩家无法执行任何操作来移动自己的棋子,将输掉游戏,游戏结束。
给定游戏的初始状态,假设 和 在游戏时均采用最佳策略,试确定 能否获胜。
输入格式
输入包含多组测试数据。
输入第一行包含一个整数 ,表示测试数据的组数。接着是一个空行。接下来是 组表示游戏初始状态的数据。
每组数据的第一行包含三个整数 ,,,表示直线的数量,允许后退的总次数,每次后退的最大距离。接下来是 行数据,每行包含三个整数 ,,,分别表示第 条直线的 轴截距以及在该条直线上的黑棋的 坐标值和白棋的 坐标值()。
每两组测试数据之间有一个空行。
输出格式
如果 能够获胜,输出 Yes
,否则输出 No
。
2
2 0 10
3 4 8
7 7 5
3 5 15
-3 -9 -19
-7 10 21
12 12 16
Yes
No
提示
样例说明
下图对应输入 #1 的第一组数据,如果 采用最优策略,无论 如何走棋, 都能够获胜。
以下是 的必胜策略。首先, 选择将 的直线上的黑棋从 4
移动到 6
,使得两条直线上黑棋和白棋之间的间距均为 ,由于 为 ,相当于不允许执行后退操作,如果 选择移动 直线上的白棋,将使得该直线上的两颗棋子相邻,后续无法再移动。同样的,如果 选择移动 直线上的白棋,也将使得该直线上的两颗棋子相邻,后续无法再移动。因此无论 如何操作,总会使得一条直线上的两颗棋子相邻,无法再继续移动,而另外一条直线上的棋子间距为 ,还可以再移动一次, 将剩下可以移动的黑棋再移动一步后,后续 无法移动白棋,因此 会获胜。
对于输入 #1 的第二组数据,无论 如何走棋, 总能够获胜。
数据范围
对于 的数据,,,,,,,。