跳伞求生

dp无法作就要想贪心了c++

裸的反悔贪心ide

将-a做为物品插进去spa

注意可能会出负特判一下code

        if(a[i]+q.top()<0) continue ;
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define A 111111
priority_queue<ll>q;
ll n,m,ans;
pair<ll,ll> pr[A];
ll a[A];
int main(){
    scanf("%lld%lld",&n,&m);
    for(ll i=1;i<=n;i++){
        scanf("%lld",&a[i]);
    }
    for(ll i=1;i<=m;i++){
        scanf("%lld%lld",&pr[i].first,&pr[i].second);
        pr[i].second=-pr[i].first+pr[i].second;
    }
    sort(a+1,a+n+1);
    sort(pr+1,pr+m+1);
    for(ll i=1,ita=1;i<=n;i++){
        while(ita<=m&&a[i]>pr[ita].first){
            q.push(pr[ita].second);
            ita++;
        }
        if(q.empty()) continue ;
        if(a[i]+q.top()<0) continue ;
        ans+=q.top()+a[i];q.pop();q.push(-a[i]);
    }
    printf("%lld\n",ans);
}
View Code
相关文章
相关标签/搜索