码迷,mamicode.com
首页 > Web开发 > 详细

【JSOI2007】【Bzoj1029】建筑抢修

时间:2016-11-23 06:25:06      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:ide   blocks   else   lin   std   http   bzoj1029   gif   return   

贪心。。。

按照T2来进行排序,用堆来进行维护。循环一遍,如果循环时间加上已用时间不超过截止时间,那就ANS++。否则,将它与堆顶判断,如果小于堆顶就把堆顶踢出,把它加入。

技术分享
 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<queue>
 4 using namespace std;
 5 const int maxn=150010;
 6 struct data{
 7     int la,e;
 8 }a[maxn];
 9 int n;
10 priority_queue <int> que;
11 bool cmp(const data &x,const data &y){
12     return x.e<y.e;
13 }
14 int main(){
15     scanf("%d",&n);
16     for (int i=1; i<=n; i++) scanf("%d%d",&a[i].la,&a[i].e);
17     sort(a+1,a+n+1,cmp);
18     long long now=0,ans=0;
19     for (int i=1; i<=n; i++){
20         int last=a[i].la;
21         int en=a[i].e;
22         if (now+last<=en){
23             ans++;
24             now+=last;
25             que.push(last);
26         }
27         else {
28             int tmp=que.top();
29             if (tmp>last){
30                 que.pop();
31                 now=now-tmp+last;
32                 que.push(last);
33             }
34         }
35     }
36     printf("%d\n",ans);
37     return 0;
38 } 
View Code

 

【JSOI2007】【Bzoj1029】建筑抢修

标签:ide   blocks   else   lin   std   http   bzoj1029   gif   return   

原文地址:http://www.cnblogs.com/Robinson828/p/6091634.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!