算法优化专题F POJ - 2431
【题目大意】 奶牛的车的油箱破了,每开一个单位距离会花费一单位体积油,奶牛距离城镇L个单位长度。在奶牛到城镇的路途中有n个加油站,第i个加油站距离城镇xi,能加yi的油。如果奶牛能到达城镇,则输出奶牛最少需要的加多少个加油站里的油。如果奶牛不能达到城镇输出-1. 【解题思路】 贪心 让奶牛用光油能到达位置x,那么此时要补充油只能从位置x(包括x)前面的加油站加油,很显然要选最多油的加油站。用大根堆维护加油站油量即可。 【代码】 # include <cstdio> # include <queue> # include <algorithm> using namespace std ; priority_queue < int > Q ; struct data { int x , y ; } a [ 10101 ] ; bool cmp ( data x , data y ) { return ( x . x < y . x ) ; } int main ( ) { int n , L , P ; scanf ( "%d" , & n ) ; for ( int i = 1 ; i <= n ; i ++ ) scanf ( "%d%d" , & a [ i ] . x , & a [ i ] . y ) ; scanf ( "%d%d" , & L , & P ) ; for