QOJ.ac

QOJ

حد الوقت: 2 s حد الذاكرة: 1024 MB مجموع النقاط: 100 قابلة للهجوم ✓

#17967. 光束

الإحصائيات

你正在运营一个区间存储服务。仓库中目前存有 $N$ 个区间,其中第 $i$ 个区间在数轴上表示为 $[l_i, r_i]$。

目前已宣布将有 $Q$ 次激光袭击仓库!第 $j$ 次激光的伤害范围可以表示为区间 $[s_j, e_j]$。每次激光袭击发生时,你的任务是移动存储的区间,使得没有任何区间被激光击中。

具体来说,对于每个存储的区间 $[l_i, r_i]$,需要选择一个合适的整数 $x_{ij}$。然后,对于所有的 $(i, j)$,$[l_i+x_{ij}, r_i+x_{ij}]$ 与 $[s_j, e_j]$ 的交集长度必须为 $0$。这里,两个区间 $[a, b]$ 和 $[c, d]$ 的交集长度定义为 $\max(0, \min(b, d) - \max(a, c))$。

区间很重,移动它们需要特殊的机器。移动一个区间所需的电费为(移动距离)$\times$(区间长度)。因此,在第 $j$ 次激光袭击前需要支付的费用为 $\sum_{i=1}^{N} (r_i-l_i)|x_{ij}|$。

请注意,在每次激光袭击后,所有区间都必须移回其初始位置,这同样会产生电费。

你的任务是在保证所有存储区间安全的前提下,支付最少的电费。计算所需的最小费用。

输入格式

输入的第一行包含两个整数 $N$ 和 $Q$,分别表示区间的数量和激光袭击的次数。($1 \le N, Q \le 250\,000$)

接下来的 $N$ 行中,第 $i$ 行包含两个整数 $l_i$ 和 $r_i$,表示第 $i$ 个区间的端点。($1 \le l_i < r_i \le 1\,000\,000$)

接下来的 $Q$ 行中,第 $j$ 行包含两个整数 $s_j$ 和 $e_j$,表示第 $j$ 次激光袭击造成的伤害范围的端点。($1 \le s_j < e_j \le 1\,000\,000$)

输入中的所有值均为整数。

输出格式

共输出 $Q$ 行:每行对应一次激光袭击,输出将所有区间移动到安全位置并移回原始状态所需的最小电费。

样例

输入样例 1

2 2
1 5
4 8
3 5
8 9

输出样例 1

24
0

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.