题解:P11328 [NOISG 2022 Finals] Gym Badges
题解:P11328 [NOISG 2022 Finals] Gym Badges
双倍经验
P4053 建筑抢修。
题目分析
这道题因为是小于这场比赛的
代码实现
可以用一个大根堆来对能参加的比赛的
AC代码
#include<iostream>
#include<queue>
#include<algorithm>
using namespace std;
priority_queue<long long>q;
struct bui{
long long x,l;
}a[500005];
bool cmp(bui a,bui b){
return a.x+a.l<b.x+b.l;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].x;
}
for(int i=1;i<=n;i++){
cin>>a[i].l;
}
long long flag=0,ans=0;
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
if(flag<=a[i].l){
flag+=a[i].x;
q.push(a[i].x);
}
else{
if(a[i].x<q.top()&&q.empty()==0){
flag-=q.top();
flag+=a[i].x;
q.pop();
q.push(a[i].x);
}
}
}
cout<<q.size();
return 0;
}
蒟蒻的第一篇题解,不合适的地方请指点。