知识点:区间贪心
这个题是区间贪心一个模型的,可以说是模板题,就是给定若干个区间,若干个点,一个点只能属于一个区间,问最多能有多少个区间放进去点
如果不会证明,那么李煜东写的很明白,虽然初学的时候写这类贪心题都是靠感觉写的,俗称蒙的,但是还是看一下证明比较好,给自己增加知识储备
#include <bits/stdc++.h>
using namespace std;
const int N = 2505;
bool cmp1(pair<int, int> a, pair<int, int> b) {
return a.first > b.first;
}
bool cmp2(pair<int, int> a, pair<int, int> b) {
return a.first > b.first;
}
int main() {
int n, m;
cin >> n >> m;
pair<int, int> a[N], b[N];
for (int i = 0; i < n; i++) cin >> a[i].first >> a[i].second;
for (int i = 0; i < m; i++) cin >> b[i].first >> b[i].second;
sort(a, a + n, cmp1);
sort(b, b + m, cmp2);
int ans = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (!b[j].second) continue;
if (b[j].first <= a[i].second && b[j].first >= a[i].first) {
b[j].second--;
ans++;
break;
}
}
}
cout << ans;
return 0;
}