QOJ.ac

QOJ

Limite de temps : 2 s Limite de mémoire : 512 MB Points totaux : 100

#337. 打砖块

Statistiques

Arkanoid 是一款电脑游戏,玩家通过移动挡板(球拍)来反弹小球。游戏的目标是消除场地内的所有砖块,每当小球击中砖块时,砖块就会被消除(同时小球反弹)。所有玩过这个游戏的人都知道,击中最后剩下的几块砖是多么令人沮丧且耗时。因此,如果能有一个程序,针对给定的初始场地配置,计算出赢得游戏所需的时间,将会非常方便。为了本题的目的,我们假设玩家操作完美,即总是用挡板的中点反弹小球。

游戏场地宽为 $m$,高为 $n$,其中 $m$ 为奇数,且 $m$ 与 $n$ 互质*。我们在场地上建立笛卡尔坐标系,使得左下角坐标为 $(0, 0)$,右上角坐标为 $(m, n)$。为简化起见,我们假设小球的大小和挡板的厚度均可忽略不计。挡板沿直线 $y = 0$ 移动,小球的初始位置为 $(\frac{m}{2}, 0)$,其初始速度(向量)为 $(-\frac{1}{2}, \frac{1}{2})$。

当小球击中挡板、场地边缘或任何砖块时,会发生弹性碰撞并反弹。然而,任何被击中的砖块都会碎裂并立即从场地中移除。请问直到所有砖块都被移除需要多少时间单位?

输入格式

标准输入的第一行包含三个整数 $m, n$ 和 $k$ ($m, n, k \ge 1, k \le nm-1$),由空格分隔,分别指定了游戏场地的尺寸和初始砖块数量。接下来的 $k$ 行描述了砖块:第 $i$ 行包含一对整数 $x_i$ 和 $y_i$ ($1 \le x_i \le m, 1 \le y_i \le n$),由空格分隔,表示场地中存在一个正方形砖块,其对角顶点位于 $(x_i - 1, y_i - 1)$ 和 $(x_i, y_i)$。你可以假设在对应于 $x_i = \frac{m+1}{2}, y_i = 1$ 的正方形区域内没有砖块。

输出格式

在标准输出的唯一一行中,打印一个整数,表示直到所有砖块被移除所需的时间单位数。

样例

输入格式 1

5 4 3
2 3
5 2
3 3

输出格式 1

22

样例评分测试

  • 1ocen: $m = 5, n = 4, k = 2$,结果较大。
  • 2ocen: $m = 11, n = 10$,砖块形成棋盘状,且不接触场地边缘。
  • 3ocen: $m = 99\,999, n = 100\,000$,砖块位于位置 $(\frac{m-1}{2}, 2), (\frac{m-5}{2}, 2), (\frac{m-9}{2}, 2), \dots$。
  • 4ocen: $m = 99\,999, n = 100\,000$,在 $(1, 1)$ 处有一个砖块,结果较大。

子任务

测试集由以下具有特定属性的子集组成。每个子集内可能包含多个测试组。

子任务 属性 分值
1 $m, n \le 100, k \le 1000$ 25
2 $n, m \le 100\,000, k \le 50$ 25
3 $m, n, k \le 100\,000$,且没有砖块与另一块砖或场地边缘共享边(注意砖块可以共享角) 25
4 $m, n, k \le 100\,000$ 25

* 若两个正整数的最大公约数为 1,则称它们互质。

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.