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); }