#1524. 网络信号覆盖

网络信号覆盖

故事背景

在一个偏远的山区,通信公司需要为村庄安装信号塔,以确保整个村庄都能被网络信号覆盖。由于预算有限,公司希望使用最少数量的信号塔来完成覆盖任务。作为网络工程师,你需要设计一个算法来确定最少需要多少个信号塔。

题目描述

给定一个村庄的长度 L ,以及一些信号塔的覆盖区间,每个区间由两个整数 a 和 b 表示,其中 a 是覆盖的起点, b 是覆盖的终点。请你计算最少需要多少个信号塔,才能使整个村庄的区间 [0, L] 被完全覆盖。

如果无法覆盖整个村庄,请返回 -1。

输入格式

第一行输入两个整数 n 和 L ( 1n1000,1L100001 \leq n \leq 1000, 1 \leq L \leq 10000 ),分别表示信号塔的数量和村庄的长度。

接下来 n 行,每行输入两个整数 a 和 b ( 0a<b100000 \leq a < b \leq 10000 ),表示一个信号塔的覆盖区间 [a, b]。

输出格式

输出一个整数,表示最少需要的信号塔数量。如果无法覆盖整个村庄,输出 -1。

样例输入 1

3 10
0 7
2 6
7 10

样例输出 1

2

样例输入 2

3 10
0 4
3 7
7 10

样例输出 2

3

样例输入 3

2 10
0 5
6 10

样例输出 3

-1

提示

  • 这是一个经典的区间覆盖问题
  • 考虑如何选择信号塔的顺序,使得覆盖范围尽可能大
  • 注意信号塔的覆盖区间可能有重叠
  • 注意处理无法覆盖整个村庄的情况