CF1175E Minimal Segment Cover

题目描述

给定 $n$ 个区间,形式为 $[l, r]$,在数轴上。 同时给定 $m$ 个查询,每个查询为 $[x, y]$。你需要选择最少数量的区间,使得从 $x$ 到 $y$ 的每一个点(不一定是整数)都被至少一个区间覆盖。 如果无法选择区间使得 $[x, y]$ 的每个点都被覆盖,则对于该查询输出 $-1$。

输入格式

第一行包含两个整数 $n$ 和 $m$($1 \le n, m \le 2 \times 10^5$),分别表示区间的数量和查询的数量。 接下来的 $n$ 行,每行包含两个整数 $l_i$ 和 $r_i$($0 \le l_i < r_i \le 5 \times 10^5$),表示给定的区间。 接下来的 $m$ 行,每行包含两个整数 $x_i$ 和 $y_i$($0 \le x_i < y_i \le 5 \times 10^5$),表示每个查询。

输出格式

输出 $m$ 个整数,第 $i$ 个数表示第 $i$ 个查询的答案:即覆盖 $[x_i, y_i]$ 的每个点所需的最少区间数。如果无法覆盖,则输出 $-1$。

说明/提示

在第一个样例中,有三个查询: 1. 查询 $[1, 3]$ 可以被区间 $[1, 3]$ 覆盖; 2. 查询 $[1, 4]$ 可以被区间 $[1, 3]$ 和 $[2, 4]$ 覆盖。无法用一个区间覆盖 $[1, 4]$; 3. 查询 $[3, 4]$ 可以被区间 $[2, 4]$ 覆盖。只需要覆盖查询区间内的点,其他点是否被覆盖无关紧要。 在第二个样例中,有四个查询: 1. 查询 $[1, 2]$ 可以被区间 $[1, 3]$ 覆盖。注意可以选择任意一个 $[1, 3]$ 区间; 2. 查询 $[1, 3]$ 可以被区间 $[1, 3]$ 覆盖; 3. 查询 $[1, 4]$ 无法被任何区间集合覆盖; 4. 查询 $[1, 5]$ 无法被任何区间集合覆盖。注意区间 $[1, 3]$ 和 $[4, 5]$ 组合无法覆盖 $[1, 5]$,因为所有点(包括非整数点)都必须被覆盖。例如 $3.5$ 没有被覆盖。 由 ChatGPT 4.1 翻译