标签:
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 11518 | Accepted: 3328 |
Description
Input
Output
Sample Input
4 4 4 5 2 11 5 15 10 25 10
Sample Output
2
优先队列应用
1、根据车子行驶过程,判断下一次要行驶到的距离 与 油量的关系
2、如果下一次行驶到的距离 > 油量,则可以行驶,并且将下一次到站
3、否则,
3.1 队列是不是为空,若为空则输出-1
3.2 将队列中最大的加油量加入现有的油量
3.3 如果油量足够到下一站,则可以
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<queue>
using namespace std;
priority_queue<int>pq;
struct town
{
int a;
int b;
};
town t[10005];
bool cmp(struct town x,struct town y)
{
return x.a < y.a;
}
int main()
{
int n,l,p;
cin>>n;
for(int i = 0; i < n ;i++)
{
scanf("%d %d",&t[i].a,&t[i].b);
}
cin>>l>>p;
for(int i = 0; i < n ;i++)
{
t[i].a = l-t[i].a;
}
sort(t,t+n,cmp);
int ans = 0;
t[n].a=l;
int flag = 0;
for(int i = 0; i<=n; i++)
{
//cout<<"size : "<<pq.size()<<endl;
while(t[i].a > p)
{
if(pq.empty())
{
cout<<-1<<endl;
flag = 1;
break;
}
//cout<<pq.top();
p += pq.top();
// cout<<p;
pq.pop();
ans++;
}
pq.push(t[i].b);
if(flag)
break;
}
if(!flag)
cout<<ans<<endl;
return 0;
}
标签:
原文地址:http://blog.csdn.net/wxyfennie/article/details/51340329