#P2373. Dividing the Path
Dividing the Path
题目描述
农夫约翰的奶牛们发现,他田地里山脊上生长的三叶草格外优质。为了给三叶草浇水,农夫约翰正在山脊上安装洒水器。
为了便于安装,每个洒水器喷头都必须安装在山脊上(我们可以将山脊看作是一条长度为(L)((1 ≤ L ≤ 1000000);(L)是偶数)的一维数轴)。
每个洒水器向山脊两侧的地面洒水,洒水半径是一个在(A)到(B)((1 ≤ A ≤ B ≤ 1000))范围内的整数。农夫约翰需要以一种方式给整个山脊浇水,使得山脊上的每个位置都恰好被一个洒水器喷头覆盖,并且约翰不会向山脊两端之外的地方洒水。
农夫约翰的(N)((1 ≤ N ≤ 1000))头奶牛各自有一片特别喜欢的三叶草生长范围(这些范围可能会重叠)。这些范围由一个闭区间((S, E))定义。每头奶牛喜欢的范围都必须由一个洒水器来浇水,这个洒水器的洒水范围可能会超出给定的范围。
找到覆盖整个山脊且不重叠所需的最少洒水器数量。如果无法为农夫约翰设计出洒水器喷头的配置方案,则输出(-1)。
输入
第(1)行:两个用空格分隔的整数:(N)和(L)
第(2)行:两个用空格分隔的整数:(A)和(B)
第(3)行到(N + 2)行:每行包含两个整数(S)和(E)((0 ≤ S < E ≤ L)),分别指定某头奶牛喜欢的范围的起始和结束位置。位置是从山脊起点开始的距离,因此范围在(0)到(L)之间。
输出
第(1)行:所需的最少洒水器数量。如果无法为农夫约翰设计出洒水器喷头的配置方案,则输出(-1)。
2 8
1 2
6 7
3 6
3
提示
输入细节: 在长度为(8)的山脊上有两头奶牛。洒水器喷头的整数洒水半径范围是(1)到(2)(即(1)或(2))。一头奶牛喜欢(3)到(6)的范围,另一头奶牛喜欢(6)到(7)的范围。
输出细节: 需要三个洒水器:一个安装在位置(1),洒水距离为(1);一个安装在位置(4),洒水距离为(2);一个安装在位置(7),洒水距离为(1)。第二个洒水器浇到了第二头奶牛喜欢的范围((3)到(6))内的所有三叶草。最后一个洒水器浇到了第一头奶牛喜欢的范围((6)到(7))内的所有三叶草。这里有一个示意图:
|-----c2----|-c1| cows' preferred ranges
|---1---|-------2-------|---3---| sprinklers
+---+---+---+---+---+---+---+---+
0 1 2 3 4 5 6 7 8
洒水器在位置(2)和(6)处不被认为是重叠的。
来源
USACO 2004 年 12 月 金牌赛