With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the way from time to time. Different gas station may give different price. You are asked to carefully design the cheapest route to go.
Input Specification:
Each input file contains one test case. For each case, the first line contains 4 positive numbers: Cmax (≤ 100), the maximum capacity of the tank; D (≤30000), the distance between Hangzhou and the destination city; Davg (≤20), the average distance per unit gas that the car can run; and N (≤ 500), the total number of gas stations. Then N lines follow, each contains a pair of non-negative numbers: Pi, the unit gas price, and Di (≤D), the distance between this station and Hangzhou, for i=1,⋯,N. All the numbers in a line are separated by a space.
Output Specification:
For each test case, print the cheapest price in a line, accurate up to 2 decimal places. It is assumed that the tank is empty at the beginning. If it is impossible to reach the destination, print The maximum travel distance = X
where X
is the maximum possible distance the car can run, accurate up to 2 decimal places.
Sample Input 1:
50 1300 12 8
6.00 1250
7.00 600
7.00 150
7.10 0
7.20 200
7.50 400
7.30 1000
6.85 300
Sample Output 1:
749.17
Sample Input 2:
50 1300 12 2
7.10 0
7.00 600
Sample Output 2:
The maximum travel distance = 1200.00
大概题意:一辆车,其油箱的最大容积为cmax,从A前往B,A与B之间的距离为D km,平均每消耗1升油可行驶avg km,A与B的路上有n个加油站,各加油站在不同的位置,其油价可能不相同。在A时油箱油量为0,如果能从A到B,求最小的花费;若不能,则计算出最大行驶距离。
贪心:1.在能到达的最大范围内,有加油站的油价比当前的油价低,那就加能到该站点的油量即可
2.在能到达的最大范围内,有加油站的油价没有当前的油价低,加满即可
循环上述即可,需要注意,当前加油站最近的一个加油站超过了车能行驶的最大距离(最大的油量*每升行驶路程),则无 法到达目的地,最长距离就是当前加油站的位置+车能行驶的最大距离。