POJ 3614 Sunscreen 優先佇列
阿新 • • 發佈:2020-12-17
//牛按左邊界從小到大排序 //防晒霜按從小到大排序 //貪心的策略是找到 左邊界小於防晒霜 且 有邊界最接近牛 #include<stdlib.h> #include<iostream> #include<utility> #include<queue> #include<algorithm> using namespace std; #define MAXN 2600 typedef pair<int, int> P; P cow[MAXN], lot[MAXN]; int main(){ int n, m; cin >> n >> m; for(int i = 0; i < n; i++) cin >> cow[i].first >> cow[i].second; for(int i = 0; i < m; i++) cin >> lot[i].first >> lot[i].second; sort(cow, cow+n); sort(lot, lot+m); int cnt = 0, cow_i = 0; priority_queue<int, vector<int>, greater<int> > q; for(int i = 0; i < m; i++){ while(cow_i < n && cow[cow_i].first <= lot[i].first){ q.push(cow[cow_i++].second); } while(!q.empty() && lot[i].second > 0){ int tmp = q.top(); q.pop(); if(tmp < lot[i].first) continue; cnt++; lot[i].second--; } } cout << cnt << endl; system("pause"); return 0; }