QOJ.ac

QOJ

时间限制: 6 s 内存限制: 1024 MB 总分: 37

#5922. 多人乒乓球

统计

两支队伍进行乒乓球比赛。乒乓球是一个简单的电脑游戏,每个玩家控制一个球拍(假设为一个点),一个小球在两端来回弹跳。一支队伍中的玩家必须按照固定的循环顺序击球(例如,对于一个三人的队伍,第一个触球的玩家是 P1,然后是 P2,接着是 P3,之后又是 P1),直到其中一名玩家无法接住球,此时球离开比赛场地,该玩家所在的队伍输掉比赛。

更准确地说:比赛场地是一个大小为 $A \times B$ 的矩形。在每一条垂直的墙壁(长度为 $A$)上,都有若干个球拍,每个球拍对应守卫该墙壁的队伍中的一名玩家。每个球拍都是一个点。同一支队伍的所有玩家的球拍以相同的速度(单位:单位/秒)垂直移动,并且可以自由穿过彼此。此外还有一个球,我们已知其初始位置(垂直和水平坐标,从左下角开始计算)和初始速度(垂直和水平速度,单位:单位/秒)。玩家可以在已知球的初始位置的情况下,选择其球拍在垂直墙壁上的初始位置。每当球到达水平墙壁时,它会反弹(入射角等于反射角)。每当球到达场地的垂直端时,如果此时轮到触球的玩家的球拍在那里,它就会反弹;如果不在那里,则该玩家所属的队伍输掉比赛。

游戏可能会持续很长时间,双方球员来回击球。你的目标是确定最终结果(假设所有玩家都采取最优策略)。

输入格式

输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例包含四行。 第一行包含两个整数 $A$ 和 $B$,描述比赛场地的高度和宽度。 第二行包含两个整数 $N$ 和 $M$,描述两支队伍的人数:$N$ 是 $X = 0$ 墙壁上的队伍人数,$M$ 是 $X = B$ 墙壁上的队伍人数。 第三行包含两个整数 $V$ 和 $W$,分别描述第一支队伍和第二支队伍的球拍移动速度。 第四行包含四个整数:$Y$、$X$、$V_Y$ 和 $V_X$,描述球的初始位置(垂直和水平)以及初始速度(球每秒向上移动 $V_Y$ 个单位,向右移动 $V_X$ 个单位,直到发生反弹)。

输出格式

对于每个测试用例,输出一行 "Case #x: y",其中 $x$ 是用例编号(从 1 开始),$y$ 是以下三种可能的结果之一:"DRAW"(如果游戏可以无限进行下去),"LEFT z"(如果 $X = 0$ 处的队伍获胜,且对方队伍最多能接住球 $z$ 次),或者 "RIGHT z"(如果 $X = B$ 处的队伍获胜,且对方队伍最多能接住球 $z$ 次)。

数据范围

$1 \le T \le 100$ $0 < X < B$ $0 < Y < A$

小数据(测试集 1 - 可见;12 分)

$1 \le N, M \le 10^6$ $1 \le V, W \le 10^{12}$ $-10^{12} \le V_Y \le 10^{12}$ $-10^6 \le V_X \le 10^6$ $2 \le A, B \le 10^6$

大数据(测试集 2 - 隐藏;25 分)

$1 \le N, M \le 10^{100}$ $1 \le V, W \le 10^{100}$ $-10^{100} \le V_Y, V_X \le 10^{100}$ $2 \le A, B \le 10^{100}$

样例

样例输入 1

4
6 4
1 2
3 1
5 1 4 8
12 3
3 1
2 3
1 1 2 4
12 3
1 3
3 1
1 1 2 4
12 2
1 2
10 2
3 1 13 4

样例输出 1

Case #1: LEFT 2
Case #2: DRAW
Case #3: LEFT 3
Case #4: RIGHT 11

图片描绘了第一个样例中的游戏过程。球在时间 0.375 时从右侧墙壁反弹(第一个 RIGHT 玩家拦截了它,例如通过将球拍初始放置在那里且不移动),然后在 0.875 时从左侧墙壁反弹(LEFT 玩家接住了球),在 1.375 时再次在右侧反弹(第二个 RIGHT 玩家可以将他的球拍放置在反弹点),再次在左侧反弹(LEFT 玩家刚好及时赶到接住球——她在一秒内移动了三个单位的距离,正好赶到),然后球击中右侧墙壁的位置太远,第一个 RIGHT 玩家无法赶到。注意,第二个 RIGHT 玩家本可以接住球,但规则不允许他这样做。还要注意,如果 RIGHT 队伍多一名玩家,她就可以接住球,那么 LEFT 队伍就会输掉——球会反弹到太高的位置,导致唯一的 LEFT 玩家无法及时赶到。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.