求dalao解释
查看原帖
求dalao解释
1165197
Eastern_Leaf楼主2024/10/5 17:18
#include<bits/stdc++.h>
using namespace std;
int n;
struct work{
    int d,p;
} a[114514];
bool cmp(work x,work y){
    return x.d < y.d;
}
priority_queue<int,vector<int> , greater<int> > q;
int main(){
    cin>>n;
    for(int i = 1;i<=n;i++){
        cin>>a[i].d>>a[i].p;
    }
    sort(a+1,a+n+1,cmp);
    long long ans  = 0;
    for(int i = 1;i<=n;i++){
        if(a[i].d > q.size()){//这里为何不能用a[i].d > a[i-1].d
            q.push(a[i].p);neng
            ans += a[i].p;
        }else{
            if(a[i].p > q.top()){
                ans -= q.top();
                q.pop();
                ans += a[i].p;
                q.push(a[i].p);
            }
        }
    }
    cout<<ans;
}
2024/10/5 17:18
加载中...