描述:
略。
#include<iostream>
#include<queue>
#include<algorithm>
using namespace std;
struct stop{
int pos,fuel;
bool operator < (const stop& rhs)const{
return this -> pos < rhs.pos;
}
}fs[10010];
int main(){
int n,p,f;
int i,j;
scanf("%d",&n);
priority_queue<int> s;
for(i = 0;i < n; ++i){
scanf("%d%d",&fs[i].pos,&fs[i].fuel);
}
sort(fs,fs + n);//WA四次,输入数据并非有序
scanf("%d%d",&p,&f);
int cnt = 0;
int fp = n - 1;
while(p > 0){
p -= f;
if(p <= 0)
break;
for(i = fp;i >= 0; --i){
if(fs[i].pos >= p)
s.push(fs[i].fuel);
else{
fp = i;
break;
}
}
if(s.empty()){
cnt = -1;
break;
}
f = s.top();
s.pop();
++cnt;
}
printf("%d\n",cnt);
return 0;
}
没油为止,等价转化的思想,选油最多的,贪心思想。