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 翻译