[BZOJ 1029]建筑抢修

废了。
我彻底废了。
就一个贪心水体。按截止时间排序然后遍历,当前花时间能干完就干,不能的话看能不能把更劣的选择换。仅此而已。
代码:
/**************************************************************
Problem: 1029
User: danihao123
Language: C++
Result: Accepted
Time:396 ms
Memory:2764 kb
****************************************************************/
#include <cstdio>
#include <algorithm>
#include <queue>
using namespace std;
typedef long long ll;
#define REP(i,n) for(i=0;i<(n);i++)
#define REP_B(i,n) for(i=1;i<=(n);i++)
const int maxn=150001;
struct Node{
int a,b;
bool operator <(const Node& x) const{
return b<x.b;
}
bool operator >(const Node& x) const{
return b>x.b;
}
};
Node T[maxn];
priority_queue<ll> Q;
int main(){
int n;
register int i,ans=0;
register ll cur=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d%d",&T[i].a,&T[i].b);
sort(T+1,T+1+n);
for(i=1;i<=n;i++){
if(cur+T[i].a<=T[i].b){
cur+=T[i].a;
Q.push(T[i].a);
}else{
if(Q.size() && Q.top()>T[i].a){
cur-=Q.top();
Q.pop();
cur+=T[i].a;
Q.push(T[i].a);
}
}
}
printf("%d\n",Q.size());
return 0;
}