1029: [JSOI2007]建筑抢修
题目:
题解:
一道以前就做过的水题(找个水题签个到嘛...)
很明显就是一道贪心题,这里我们用一个堆来维护
具体看代码吧,很容易YY所以不讲
代码:
1 #include2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 typedef long long LL;10 struct node11 {12 LL t1,t2;13 }a[151000];14 priority_queue ,less > q;15 bool cmp(node n1,node n2)16 {17 if(n1.t2>n2.t2)return false;18 if(n1.t2 n2.t1)return false;21 return true;22 }23 LL n;24 int main()25 {26 scanf("%lld",&n);27 for(int i=1;i<=n;i++)28 scanf("%lld%lld",&a[i].t1,&a[i].t2);29 sort(a+1,a+n+1,cmp);30 LL ans=0,now=0;31 for(int i=1;i<=n;i++)32 {33 if(now+a[i].t1<=a[i].t2)34 {35 ans++;36 now+=a[i].t1;37 q.push(a[i].t1);38 }39 else40 {41 LL t=q.top();42 if(a[i].t1