QOJ.ac

QOJ

Time Limit: 3 s Memory Limit: 256 MB Total points: 100

#1215. Walls

统计

题目背景

你得到了 JOI 公司发行的一款电视游戏软件。这是一款制作精良的游戏,你每天都玩得相当开心。

有一天,玩家之间出现了一个被称为“激光”的关卡。这个关卡似乎极其困难,即使是优秀的玩家,也只有极小的概率才能通关。在多次挑战这个关卡的过程中,你注意到,如果能够进行非常高速的判断,就有可能通关,于是你想到,也许可以通过编写程序来应对。

激光关卡的舞台上放置了 $N$ 个防壁。舞台是一个长方形,被划分为 $1 \times 1$ 的正方形格子。每个格子用非负整数 $x, y$ 表示为 $(x, y)$。$(0, 0)$ 表示左下角的格子,$(x, y)$ 表示从 $(0, 0)$ 向右走 $x$ 格、向上走 $y$ 格所到达的格子。

关卡开始后,敌人会出现并发动攻击。攻击一共进行 $M$ 次,按顺序依次进行。在第 $j$ 次攻击中,敌人会从格子 $(P_j, N+1)$ 向格子 $(P_j, 0)$ 直线发射一道激光。

每个防壁都放置在 $y$ 坐标相同的一段连续格子上。防壁 $i$($1 \le i \le N$)是一个左右宽度为 $B_i - A_i + 1$、上下宽度为 $1$ 的长方形,在关卡开始时占据从格子 $(A_i, i)$ 到格子 $(B_i, i)$ 的位置。你可以在敌人第一次攻击之前,以及敌人每两次攻击之间的任意时刻,多次将防壁向左右移动。一次移动可以将一个防壁向右移动 $1$ 格,或者向左移动 $1$ 格。

激光在碰到防壁时威力会减弱。通过移动防壁,使得所有激光都能依次碰到所有防壁,从而将激光的威力降到最小。

在这个关卡中,你希望尽量减少防壁的移动次数。

任务

给定关卡开始时各个防壁的位置,以及每一次敌人攻击的位置。在移动防壁使得所有激光都能碰到所有防壁的前提下,求每个防壁所需的最小移动次数。

输入格式

从标准输入中读入以下数据:

  • 第一行包含两个整数 $N, M$,用空格分隔,表示该关卡中有 $N$ 个防壁,敌人的攻击共进行 $M$ 次。
  • 接下来的 $N$ 行中,第 $i$ 行($1 \le i \le N$)包含两个整数 $A_i, B_i$,用空格分隔,表示在关卡开始时,防壁 $i$ 占据从格子 $(A_i, i)$ 到格子 $(B_i, i)$ 的位置。
  • 接下来的 $M$ 行中,第 $j$ 行($1 \le j \le M$)包含一个整数 $P_j$,表示在第 $j$ 次攻击中,敌人从格子 $(P_j, N+1)$ 向格子 $(P_j, 0)$ 直线发射激光。

输出格式

向标准输出输出 $N$ 行。第 $i$ 行($1 \le i \le N$)输出防壁 $i$ 的最小移动次数。

限制

所有输入数据均满足以下条件:

  • $1 \le N \le 200,000$
  • $1 \le M \le 200,000$
  • $0 \le A_i \le B_i \le 1,000,000,000$($1 \le i \le N$)
  • $0 \le P_j \le 1,000,000,000$($1 \le j \le M$)

子任务

子任务 1(10 分)

  • 满足 $N = 1$。

子任务 2(45 分)

  • 满足 $A_i = 0$($1 \le i \le N$)。

子任务 3(45 分)

  • 无额外限制。

样例数据

输入例 1

4 4
0 3
4 4
2 7
8 11
6
4
3
8

输出例 1

5
10
1
7

在该输入中,使防壁移动次数最小的一种移动方式如下:

  • 在第 1 次攻击之前,将防壁 1 向右移动 3 次,将防壁 2 向右移动 2 次,防壁 3 不移动,将防壁 4 向左移动 2 次。
  • 在第 2 次攻击之前,防壁 1 不移动,将防壁 2 向左移动 2 次,防壁 3 不移动,将防壁 4 向左移动 2 次。
  • 在第 3 次攻击之前,防壁 1 不移动,将防壁 2 向左移动 1 次,防壁 3 不移动,将防壁 4 向左移动 1 次。
  • 在第 4 次攻击之前,将防壁 1 向右移动 2 次,将防壁 2 向右移动 5 次,将防壁 3 向右移动 1 次,将防壁 4 向右移动 2 次。

在这种移动方式下,防壁 1 共移动 5 次,防壁 2 共移动 10 次,防壁 3 共移动 1 次,防壁 4 共移动 7 次。

输入例 2

7 11
12 39
22 23
5 38
6 47
10 43
0 50
18 46
38
19
15
1
12
29
29
0
6
40
6

输出例 2

34
178
13
6
18
0
36

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

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.