zoukankan      html  css  js  c++  java
  • bzoj1029 [JSOI2007]建筑抢修

      贪心,按截止时间排序,然后按截止时间从小到大枚举维修的建筑,如果之前修理建筑的总时间+当前修理时间<=截止时间,那么答案+1,否则如果之前修理过的建筑中最大的修理时间>当前建筑修理时间,那么替换掉之前修理的那座建筑。

          代码

     1 #include<cstdio>
     2 #include<queue>
     3 #include<algorithm>
     4 #define mp make_pair
     5 #define fi first
     6 #define sc second
     7 using namespace std;
     8 const int N = 2001010;
     9 priority_queue<int> Q;
    10 struct g{
    11     int a,b;
    12 }v[N];
    13 bool cmp(g u,g v)
    14 {
    15     if (u.b==v.b) 
    16     return u.a>v.a;
    17     return u.b<v.b;
    18 }
    19 int n,sum,i,ans;
    20 int main()
    21 {
    22     scanf("%d",&n);
    23     for (i=1;i<=n;i++)
    24     scanf("%d%d",&v[i].a,&v[i].b);
    25     sort(v+1,v+1+n,cmp); 
    26     for (i=1;i<=n;i++)
    27     {
    28         //printf("%d %d
    ",sum,v[i].b);
    29         if (sum+v[i].a>v[i].b)
    30         {
    31             if ((!Q.empty())&&(Q.top()>v[i].a))
    32             {
    33                 sum-=Q.top();
    34                 sum+=v[i].a;
    35                 Q.pop();
    36                 Q.push(v[i].a);
    37             }
    38         }
    39         else
    40         {
    41             Q.push(v[i].a);
    42             sum+=v[i].a;
    43             ans++;
    44         }
    45     } 
    46     printf("%d
    ",ans);
    47 }
  • 相关阅读:
    IDEA使用Git传放项目
    前端自适应知识点
    数据可视化
    vue调用Moment显示时间
    java判断通常的逻辑
    java常用的逻辑
    java匿名内部类练习
    java 匿名内部类
    java 内部类定义在局部时需要注意的情况
    java内部类的定义原则
  • 原文地址:https://www.cnblogs.com/fzmh/p/5502507.html
Copyright © 2011-2022 走看看