zoukankan      html  css  js  c++  java
  • 建筑抢修

    小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的
    入侵者。但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建筑设施将会完全
    毁坏。现在的情况是:T部落基地里只有一个修理工人,虽然他能瞬间到达任何一个建筑,但是修复每个建筑都需
    要一定的时间。同时,修理工人修理完一个建筑才能修理下一个建筑,不能同时修理多个建筑。如果某个建筑在一
    段时间之内没有完全修理完毕,这个建筑就报废了。你的任务是帮小刚合理的制订一个修理顺序,以抢修尽可能多
    的建筑。

    Input

      第一行是一个整数N接下来N行每行两个整数T1,T2描述一个建筑:修理这个建筑需要T1秒,如果在T2秒之内还
    没有修理完成,这个建筑就报废了。

    Output

      输出一个整数S,表示最多可以抢修S个建筑.N < 150,000;  T1 < T2 < maxlongint

    Sample Input

    4
    100 200
    200 1300
    1000 1250
    2000 3200

    Sample Output

    3
    贪心 优先队列
     1 #include <iostream>
     2 
     3 using namespace std;
     4 #include<stack>
     5 #include<stdio.h>
     6 #include<math.h>
     7 #include<string.h>
     8 #include<map>
     9 #include<queue>
    10 #include<algorithm>
    11 struct lll
    12 {
    13     long long needtime;
    14     long long sumtime;
    15 }a[150010];
    16 int cmp1(lll a,lll b)
    17 {
    18     return a.sumtime<b.sumtime;
    19 }
    20 struct cmp2{
    21     bool operator ()(int &a,int &b){
    22         return a<b;
    23     }
    24 };
    25 
    26 int main()
    27 {
    28     priority_queue<int,vector<int>,cmp2>s;
    29     int t,i;
    30     cin>>t;
    31     for(i=0;i<t;i++)
    32         cin>>a[i].needtime>>a[i].sumtime;
    33         sort(a,a+t,cmp1);
    34     long long add,sum;
    35     add=0;
    36     sum=0;
    37     for(i=0;i<t;i++)
    38     {
    39         if(sum+a[i].needtime<=a[i].sumtime)
    40         {
    41             add++;
    42             sum+=a[i].needtime;
    43             s.push(a[i].needtime);
    44         }
    45         else if(a[i].needtime<s.top())
    46         {
    47             sum=sum-s.top()+a[i].needtime;
    48             s.pop();
    49             s.push(a[i].needtime);
    50         }
    51     }
    52     cout<<add<<endl;
    53     return 0;
    54 }
    View Code
  • 相关阅读:
    URL重定向功能与APS.NET的固化功能结合
    How can I share types when generate WebSevice proxies using local paths
    C# Coding Standard Naming Conventions and Style
    VS自动化对象模型
    odac 如何捕捉错误odac 如何捕捉错误
    webbrower应用实例
    webbrower在同一个窗口打开新增窗口
    [DELPHI]$2501錯誤處理
    暴力破解例子
    webbrower连接在新form中显示
  • 原文地址:https://www.cnblogs.com/dulute/p/7272508.html
Copyright © 2011-2022 走看看