当前位置: 代码迷 >> 综合 >> POJ 2431 丛林探险(优先队列)
  详细解决方案

POJ 2431 丛林探险(优先队列)

热度:22   发布时间:2023-11-26 03:46:09.0

额,错误代码WA得莫名其妙

#include<iostream>
#include<cstdlib>
#include<sstream>
#include<cstdio>
#include<stack>
#include<cstdio>
#include<map>
#include<set>
#include<queue>
#include<cstring>
#include<cmath>
#include<vector>
#include<algorithm>
#define REP(i,a,b) for(int i=a;i<b;i++)
#define REPP(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=10005;struct node
{int dis;int add;
} port[maxn];bool cmp(node a,node b)
{return a.dis>b.dis;
}
priority_queue<int> que;
int main()
{int n;while(~scanf("%d",&n)){REP(i,0,n){scanf("%d%d",&port[i].dis,&port[i].add);}sort(port,port+n,cmp);int L,P;scanf("%d%d",&L,&P);int pos=P;//记录可到达的位置看能否到城镇int k=0;//需要到第k个加油站int ans=0;//记录加油次数while(pos<L){while(pos>=L-port[k].dis && k<n){que.push(port[k].add);k++;}if(que.empty()){cout<<-1<<endl; break;}else{pos+=que.top();que.pop();ans++;}}cout<<ans<<endl;}return 0;
}