#P9895. [ICPC 2018 Qingdao R] Airdrop
[ICPC 2018 Qingdao R] Airdrop
Description
PUBG 是一款多人在线大逃杀视频游戏。在游戏中,最多一百名玩家跳伞到一个岛上,搜寻武器和装备以击杀其他玩家,同时避免自己被击杀。空投是游戏中的一个关键元素,因为空投通常携带强大的武器或大量补给,帮助玩家生存。
考虑游戏的战场是一个二维平面。一个空投刚刚降落在点 ( 和 都是整数),战场上的所有 名玩家,其中 ( 和 都是整数)表示第 名玩家的初始位置,开始以以下模式向空投移动:
- 如果一个活着的玩家在这个时间单位开始时的位置不等于 ,他将开始他的下一步移动。
-
- 假设他当前在点 。对于他的下一步移动,他将考虑四个点 、、 和 。
-
- 他将选择其中一个到空投 的曼哈顿距离最小的点作为他下一步的目的地。回忆一下,两点 和 之间的曼哈顿距离定义为 。
-
- 如果两个或更多点到空投的曼哈顿距离相同,他将使用以下优先级规则来打破平局: 优先级最高, 优先级第二, 优先级第三, 优先级最低。
-
- 在这个时间单位结束时,他到达他的目的地。
- 如果一个活着的玩家在这个时间单位开始时的位置等于 ,他将继续用空投中的补给填满他的背包,并停留在 。
但战斗很激烈,几乎不可能所有玩家都安全到达空投。如果两个或更多玩家在点 相遇,且 不是 ,他们将互相搏斗并全部阵亡,没有人存活。
BaoBao 是该游戏的忠实粉丝,对成功到达空投位置的玩家数量感兴趣,但他不知道 的值。给定 的值和每个玩家的初始位置,请帮助 BaoBao 计算对于所有 ( 是所有整数的集合,注意 可以是正数、零或负数),成功到达空投位置的玩家数量的最小值和最大值。
Input Format
有多个测试用例。输入的第一行包含一个整数 ,表示测试用例的数量。对于每个测试用例:
第一行包含两个整数 和 (,),表示玩家的数量和空投的 值。
接下来的 行中,第 行包含两个整数 和 (),表示第 名玩家的初始位置。
保证所有测试用例中 的总和不超过 ,并且在每个测试用例中没有两个玩家共享相同的初始位置。
Output Format
对于每个测试用例输出一行,包含两个整数 和 ,用一个空格分隔。 表示成功到达空投位置的玩家数量的最小可能值,而 表示最大可能值。
3
3 2
1 2
2 1
3 5
3 3
2 1
2 5
4 3
2 3
1 3
4 3
1 3
0 3
2 2
Hint
我们现在解释第一个样例测试用例。
为了得到 的答案,应该考虑 。下表显示了当 时每个玩家在每个时间单位结束时的位置。
为了得到 的答案,应该考虑 。下表显示了当 时每个玩家在每个时间单位结束时的位置。
题面翻译由 ChatGPT-4o 提供。
京公网安备 11011102002149号