zoukankan      html  css  js  c++  java
  • HIT 2051

    这题说的是 一辆汽车 每走一单位的距离就消耗一单位的燃料,然后,他要回城里去,当然他与城镇之间有n个加油站 ,他的油箱可以为 无穷大 ,这样分析后发现进不进汽油站 与 汽油站在哪无关 ,只与加油站的 汽油有关 (当然是他能到达的加油站)然后直接贪心
    #include<string.h>
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<queue>
    using namespace std;
    struct point {
        int dist,pow,num;
        bool operator <(const point &b) const{
           if(pow<b.pow) return true;
           else return false;
        }
    };
    point P[100005];
    bool cmp(point a,point b)
    {
        if(a.dist>b.dist) return true;
        else return false;
    }
    bool mark[100005];
    int main()
    {
       int i,n,num;
       point T,W;
       priority_queue<point>Q;
       while(scanf("%d",&n)==1){
           while(!Q.empty())Q.pop();
            num=0;
            memset(mark,true,sizeof(mark));
            for(i=0;i<n;i++)
            scanf("%d%d",&P[i].dist,&P[i].pow);
            sort(P,P+n,cmp);
            scanf("%d%d",&T.dist,&T.pow);
            for(i=0;i<n;i++)
            P[i].num=i;
    		T.num=-1;
            Q.push(T);
            while(!Q.empty()){
                Q.pop();
                if(T.pow>=T.dist) break;
                for(i=T.num+1;i<n;i++)
                  if(T.pow-(T.dist-P[i].dist)>=0&&mark[i]){
                      Q.push(P[i]);
                      mark[i]=0;
                  }
                  if(Q.empty()) break;
                  W=Q.top();
                if(W.dist>T.dist){
                   T.pow+=W.pow;
                }
                else{
                     W.pow+=T.pow-(T.dist-W.dist);
                     T=W;
                }
                 num++;
                if(T.pow>=T.dist) break;
    
            }
            if(T.pow>=T.dist)printf("%d
    ",num);
            else printf("-1
    ");
       }
        return 0;
    }
    


  • 相关阅读:
    IO之同步、异步、阻塞、非阻塞 (2)
    IO之同步、异步、阻塞、非阻塞
    Syncthing源码解析
    Syncthing源码解析
    在Gogland里对GO程序进行单元测试!
    GO学习笔记
    GO学习笔记
    GO学习笔记
    GO学习笔记
    GO学习笔记
  • 原文地址:https://www.cnblogs.com/Opaser/p/3662043.html
Copyright © 2011-2022 走看看