标签:
| 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