1 .(100pts)
priority_queue<int> q;
int nowsum=0;
for(int i=1;i<=n;i++){
nowsum+=b[i].time1;
q.push(b[i].time1);
if(b[i].time2<nowsum){
nowsum-=q.top();
q.pop();
}
}cout<<q.size();
2.(70pts)
priority_queue<int> q;
int nowsum=0;
for(int i=1;i<=n;i++){
if(b[i].time2>=nowsum+b[i].time1){
q.push(b[i].time1);
nowsum+=b[i].time1;
}else{
if(q.size()){
int now=q.top();
if(b[i].time2>=nowsum-now+b[i].time1){
q.pop();
q.push(b[i].time1);
nowsum=nowsum-now+b[i].time1;
}
}
}
}cout<<q.size();
其中 nowsum 指代目前建造所有队列 q 里的建筑所花费的总时长