#6846. 远征
远征
远征
题目描述
一群奶牛开着卡车进入丛林探险。
由于驾驶技术不佳,卡车撞上了一块石头,导致油箱被刺破。现在,卡车每行驶 (1) 个单位距离,就会消耗 (1) 单位燃油。
为了修理卡车,奶牛们需要前往最近的城镇。城镇距离卡车当前位置不超过 (1,000,000) 个单位。
在卡车当前位置与城镇之间的道路上,共有 (N) 个加油站。每个加油站可以提供一定数量的燃油。
由于丛林十分危险,奶牛们希望在前往城镇的过程中,尽可能少地停车加油。
卡车的油箱容量足够大,可以认为没有容量限制。
已知:
- 卡车当前位置距离城镇 (L) 个单位;
- 卡车当前拥有 (P) 单位燃油;
- 每个加油站距离城镇的位置以及可提供的燃油量。
请计算卡车到达城镇所需的最少加油次数。
如果无论如何都无法到达城镇,输出 (-1)。
输入格式
第一行输入一个整数 (T),表示测试数据的组数。
对于每组测试数据:
第一行输入一个整数 (N),表示加油站数量。
接下来 (N) 行,每行输入两个整数 (D_i,F_i),表示第 (i) 个加油站:
- 距离城镇 (D_i) 个单位;
- 可以提供 (F_i) 单位燃油。
最后一行输入两个整数 (L,P),表示:
- 卡车当前位置距离城镇 (L) 个单位;
- 卡车当前拥有 (P) 单位燃油。
输出格式
对于每组测试数据,输出一个整数,表示到达城镇所需的最少加油次数。
如果无法到达城镇,输出:
-1
每组测试数据的答案占一行。
数据范围
1 ≤ T
1 ≤ N ≤ 10000
1 ≤ Di ≤ 1000000
1 ≤ Fi ≤ 100
1 ≤ L ≤ 1000000
1 ≤ P ≤ 1000000
所有加油站都位于卡车当前位置和城镇之间。
卡车每行驶 (1) 个单位距离,消耗 (1) 单位燃油。
油箱容量没有限制。
样例输入
1
4
4 4
5 2
11 5
15 10
25 10
样例输出
2
样例说明
卡车当前位置距离城镇 (25) 个单位,并且当前拥有 (10) 单位燃油。
道路上有 (4) 个加油站:
| 加油站距离城镇 | 可提供燃油 |
|---|---|
| 4 | |
| 5 | 2 |
| 11 | 5 |
| 15 | 10 |
注意,输入给出的距离是:
加油站到城镇的距离
而不是加油站到卡车起点的距离。
因此,这些加油站距离卡车起点的位置分别为:
25 - 4 = 21
25 - 5 = 20
25 - 11 = 14
25 - 15 = 10
也就是说,从卡车起点出发,加油站依次位于:
10、14、20、21
个单位的位置。
一种最优方案如下:
- 卡车先行驶 (10) 个单位,到达可以提供 (10) 单位燃油的加油站;
- 第一次停车,加油 (10) 单位;
- 再行驶 (4) 个单位,到达可以提供 (5) 单位燃油的加油站;
- 第二次停车,加油 (5) 单位;
- 使用剩余燃油继续行驶,最终到达城镇。
因此,最少需要停车加油:
2 次