QOJ.ac

QOJ

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

#13557. 平衡车

Estadísticas

在杜布罗夫尼克市(Dubrovnik)举行了一场 Segway(平衡车)比赛。赛道由三个路段组成,每个路段长 100 米——因此,赛道总长为 300 米。根据其 Segway 电池的限制,每位选手都有一个策略:在第一个 100 米、接下来的 100 米以及最后的 100 米上的骑行速度,除非允许将 Segway 加速到最大速度(在下一段中解释)。

不幸的是,Segway 非常慢,每行驶一米需要 1 到 50 秒。因此,本题中的速度以“秒/米”为单位(而不是“米/秒”)。

沿赛道设有若干个加速点(加速器)。当选手到达加速点时,其 Segway 会获得额外动力,在接下来的 $X \bmod 20$ 米内以 $1$ 秒/米的最大速度骑行,其中 $X$ 是他到达该加速点时,严格领先于他的选手人数(包括已经完赛的选手)。在用完上一个加速器的所有额外动力之前,选手无法使用另一个加速器。此时,如果没有新的加速器,选手将继续以该赛道段对应的默认速度移动。

假设选手总是会使用可用的加速器,即使这可能不是最优策略。一个加速器可以被多位选手同时使用。你的任务是编写一个程序来模拟这场比赛。假设所有 Segway 选手同时出发,请输出每位选手完赛所需的时间(以秒为单位)。

输入格式

第一行包含一个整数 $N$($2 \le N \le 20\,000$),表示选手人数。

接下来的 $N$ 行中,第 $K$ 行包含三个介于 $1$ 和 $50$ 之间的整数:第 $K$ 位选手在赛道前 100 米、中间 100 米和最后 100 米的默认速度。

下一行包含一个整数 $M$($0 \le M \le 299$),表示加速点的数量。

如果 $M > 0$,则下一行包含一个严格递增的序列,由 $M$ 个介于 $1$ 和 $299$ 之间的整数组成:表示各加速器距离赛道起点的距离(以米为单位)。

输出格式

你应该输出 $N$ 行,其中第 $K$ 行包含第 $K$ 位选手完赛所需的时间。

子任务

子任务 分数 附加限制
1 15 $M = 1$
2 40 $N \le 300$
3 45 无附加限制

样例

输入样例 1

2
1 2 3
4 5 6
0

输出样例 1

600
1500

输入样例 2

3
5 5 5
6 2 10
10 9 2
2
100 199

输出样例 2

1496
1799
2075

输入样例 3

5
2 2 2
6 6 6
8 8 8
9 9 9
10 10 10
2
297 298

输出样例 3

600
1790
2386
2676
2973

说明

样例 1 说明:没有加速器,两位选手都使用其默认速度。

样例 2 说明:选手 1 没有使用第一个加速器(因为当时没有人领先于他),但使用了第二个加速器,因为在此期间选手 2 超过了他。总的来说,选手 1 以每米 5 秒的速度骑行了 299 米,以每米 1 秒的速度骑行了 1 米。

选手 2 使用了第一个加速器(当时有一位选手领先于他),但没有使用第二个。总的来说,他以每米 6 秒的速度骑行了 100 米,以每米 1 秒的速度骑行了 1 米,以每米 2 秒的速度骑行了 99 米,以每米 10 秒的速度骑行了 100 米。

选手 3 在每个加速器后都以最大速度骑行了 2 米。总的来说,他以每米 10 秒的速度骑行了 100 米,以每米 1 秒的速度骑行了 2 米,以每米 9 秒的速度骑行了 97 米,以每米 1 秒的速度骑行了 2 米,以每米 2 秒的速度骑行了 99 米。

样例 3 说明:在靠近赛道终点的两个加速器中,选手 1 没有使用任何一个。选手 2 两个都使用了(每次持续 1 米),然后以其默认速度又骑行了 1 米。选手 3 使用了第一个加速器(持续 2 米),然后以其默认速度又骑行了 1 米。选手 4 和选手 5 利用第一个加速器的额外动力一直骑行到了终点。

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.