跳傘求生

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
相關文章
相關標籤/搜索