CF1175E.Minimal Segment Cover

提高+/省选-

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given nn intervals in form [l;r][l; r] on a number line.

You are also given mm queries in form [x;y][x; y]. What is the minimal number of intervals you have to take so that every point (not necessarily integer) from xx to yy is covered by at least one of them?

If you can't choose intervals so that every point from xx to yy is covered, then print -1 for that query.

给你数轴上的 nn 个区间,每个区间形如 [l;r][l; r]。

同时给你 mm 个查询,每个查询形如 [x;y][x; y]。你需要选出最少数量的区间,使得从 xx 到 yy 的每一个点(不一定是整数)都被至少一个所选区间覆盖。

如果无法选出若干区间使得 xx 到 yy 之间的所有点均被覆盖,则对该查询输出 -1。

输入格式

The first line contains two integers nn and mm (1≤n,m≤2⋅1051 \le n, m \le 2 \cdot 10^5) — the number of intervals and the number of queries, respectively.

Each of the next nn lines contains two integer numbers lil_i and rir_i (0≤li<ri≤5⋅1050 \le l_i \lt r_i \le 5 \cdot 10^5) — the given intervals.

Each of the next mm lines contains two integer numbers xix_i and yiy_i (0≤xi<yi≤5⋅1050 \le x_i \lt y_i \le 5 \cdot 10^5) — the queries.

第一行包含两个整数 nn 和 mm(1≤n,m≤2⋅1051 \le n, m \le 2 \cdot 10^5),分别表示区间的数量和查询的数量。

接下来的 nn 行中,每行包含两个整数 lil_i 和 rir_i(0≤li<ri≤5⋅1050 \le l_i \lt r_i \le 5 \cdot 10^5),表示给定的区间。

接下来的 mm 行中,每行包含两个整数 xix_i 和 yiy_i(0≤xi<yi≤5⋅1050 \le x_i \lt y_i \le 5 \cdot 10^5),表示查询。

输出格式

Print mm integer numbers. The ii-th number should be the answer to the ii-th query: either the minimal number of intervals you have to take so that every point (not necessarily integer) from xix_i to yiy_i is covered by at least one of them or -1 if you can't choose intervals so that every point from xix_i to yiy_i is covered.

输出 mm 个整数。其中第 ii 个数应为第 ii 个查询的答案:即覆盖区间 [xi,yi][x_i, y_i] 中每个点(不一定是整数)所需的最少区间数量;若无法选择若干区间使得 [xi,yi][x_i, y_i] 中的每个点均被至少一个区间覆盖,则输出 −1-1。

输入输出样例

  • 输入#1

    2 3
    1 3
    2 4
    1 3
    1 4
    3 4

    输出#1

    1
    2
    1
  • 输入#2

    3 4
    1 3
    1 3
    4 5
    1 2
    1 3
    1 4
    1 5

    输出#2

    1
    1
    -1
    -1

说明/提示

In the first example there are three queries:

  1. query [1;3][1; 3] can be covered by interval [1;3][1; 3];
  2. query [1;4][1; 4] can be covered by intervals [1;3][1; 3] and [2;4][2; 4]. There is no way to cover [1;4][1; 4] by a single interval;
  3. query [3;4][3; 4] can be covered by interval [2;4][2; 4]. It doesn't matter that the other points are covered besides the given query.

In the second example there are four queries:

  1. query [1;2][1; 2] can be covered by interval [1;3][1; 3]. Note that you can choose any of the two given intervals [1;3][1; 3];
  2. query [1;3][1; 3] can be covered by interval [1;3][1; 3];
  3. query [1;4][1; 4] can't be covered by any set of intervals;
  4. query [1;5][1; 5] can't be covered by any set of intervals. Note that intervals [1;3][1; 3] and [4;5][4; 5] together don't cover [1;5][1; 5] because even non-integer points should be covered. Here 3.53.5, for example, isn't covered.

在第一个例子中有三个查询:

  1. 查询 [1;3][1; 3] 可由区间 [1;3][1; 3] 覆盖;
  2. 查询 [1;4][1; 4] 可由区间 [1;3][1; 3] 和 [2;4][2; 4] 覆盖。不存在仅用一个区间覆盖 [1;4][1; 4] 的方法;
  3. 查询 [3;4][3; 4] 可由区间 [2;4][2; 4] 覆盖。除查询所指定的点之外,其他点是否被覆盖无关紧要。

在第二个例子中有四个查询:

  1. 查询 [1;2][1; 2] 可由区间 [1;3][1; 3] 覆盖。注意:你可以任选两个给定的区间 [1;3][1; 3] 中的一个;
  2. 查询 [1;3][1; 3] 可由区间 [1;3][1; 3] 覆盖;
  3. 查询 [1;4][1; 4] 无法被任何一组区间覆盖;
  4. 查询 [1;5][1; 5] 无法被任何一组区间覆盖。注意:区间 [1;3][1; 3] 和 [4;5][4; 5] 合起来并不能覆盖 [1;5][1; 5],因为所有实数点(包括非整数点)都必须被覆盖。例如,点 3.53.5 就未被覆盖。

输入解题思路,AI测评打分。不知道怎么写?

首页