QOJ.ac

QOJ

Límite de tiempo: 1 s Límite de memoria: 256 MB Puntuación total: 100

#6136. 空投

Estadísticas

PUBG 是一款多人在线大逃杀游戏。在游戏中,最多一百名玩家跳伞降落到一个岛屿上,搜寻武器和装备以击杀他人,同时避免自己被杀。空投是游戏中的一个关键要素,因为空投通常携带强力武器或大量补给,帮助玩家生存。

游戏中的空投(?)

将游戏战场视为一个二维平面。一个空投刚刚降落在点 $(x_0, y_0)$($x_0$ 和 $y_0$ 均为整数),战场上的所有 $n$ 名玩家(初始位置为 $(x_i, y_i)$,其中 $x_i$ 和 $y_i$ 均为整数)开始按照以下模式向空投移动:

  • 如果一名存活玩家在当前时间单位开始时的位置不等于 $(x_0, y_0)$,他将开始下一次移动。
    • 假设他当前位于点 $(x, y)$。在下一次移动中,他会考虑四个点:$(x, y-1)$、$(x, y+1)$、$(x-1, y)$ 和 $(x+1, y)$。
    • 他会选择这四个点中到空投 $(x_0, y_0)$ 的曼哈顿距离最小的点作为下一次移动的目的地。回想一下,两点 $(x_a, y_a)$ 和 $(x_b, y_b)$ 之间的曼哈顿距离定义为 $|x_a - x_b| + |y_a - y_b|$。
    • 如果两个或多个点到空投的曼哈顿距离相同,他将使用以下优先级规则来打破平局:$(x, y-1)$ 的优先级最高,$(x, y+1)$ 的优先级次之,$(x-1, y)$ 的优先级第三,$(x+1, y)$ 的优先级最低。
    • 在该时间单位结束时,他到达目的地。
  • 如果一名存活玩家在当前时间单位开始时的位置等于 $(x_0, y_0)$,他将继续在空投处补充背包中的补给,并停留在 $(x_0, y_0)$。

但战斗是残酷的,几乎不可能让所有玩家都安全到达空投处。如果两个或多个玩家在 $(x_0, y_0)$ 以外的某点 $(x', y')$ 相遇(其中 $x'$ 和 $y'$ 均为整数),他们会发生战斗并互相击杀,导致无人生还。

BaoBao 是该游戏的忠实粉丝,他对成功到达空投位置的玩家数量很感兴趣,但他不知道 $x_0$ 的值。给定 $y_0$ 的值以及每位玩家的初始位置,请帮助 BaoBao 计算对于所有 $x_0 \in \mathbb{Z}$(其中 $\mathbb{Z}$ 是所有整数的集合,注意 $x_0$ 可以是正数、零或负数),成功到达空投位置的玩家数量的最小值和最大值。

输入格式

输入包含多组测试数据。第一行包含一个整数 $T$,表示测试数据的组数。对于每组测试数据:

第一行包含两个整数 $n$ 和 $y_0$ ($1 \le n \le 10^5$, $1 \le y_0 \le 10^5$),分别表示玩家数量和空投的 $y$ 坐标。

接下来的 $n$ 行,第 $i$ 行包含两个整数 $x_i$ 和 $y_i$ ($1 \le x_i, y_i \le 10^5$),表示第 $i$ 位玩家的初始位置。

保证所有测试数据中 $n$ 的总和不超过 $10^6$,且在每组测试数据中,没有两名玩家拥有相同的初始位置。

输出格式

对于每组测试数据,输出一行,包含两个整数 $p_{\min}$ 和 $p_{\max}$,中间用空格隔开。$p_{\min}$ 表示成功到达空投位置的玩家数量的最小值,$p_{\max}$ 表示最大值。

样例

样例输入 1

3
3 2
1 2
2 1
3 5
3 3
2 1
2 5
4 3
2 3
1 3
4 3

样例输出 1

1 3
0 3
2 2

说明

我们现在解释第一组样例测试数据。

为了得到 $p_{\min} = 1$,应考虑 $x_0 = 3$。下表显示了当 $x_0 = 3$ 时,每位玩家在每个时间单位结束时的位置。

时间 玩家 1 玩家 2 玩家 3
0 (1, 2) (2, 1) (3, 5)
1 (2, 2) (2, 2) (3, 4)
2 被淘汰 被淘汰 (3, 3)
3 被淘汰 被淘汰 (3, 2)

为了得到 $p_{\max} = 3$,应考虑 $x_0 = 2$。下表显示了当 $x_0 = 2$ 时,每位玩家在每个时间单位结束时的位置。

时间 玩家 1 玩家 2 玩家 3
0 (1, 2) (2, 1) (3, 5)
1 (2, 2) (2, 2) (3, 4)
2 (2, 2) (2, 2) (3, 3)
3 (2, 2) (2, 2) (3, 2)
4 (2, 2) (2, 2) (2, 2)

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.