#include <bits/stdc++.h>
using namespace std;
int n, m1, m2, ans;
struct airplane {
int come, go;
} gn[100005], gj[100005];
int gnlq[100005], gjlq[100005], tmp[100005];
bool cmp(airplane x, airplane y) {
return x.come < y.come;
}
int main() {
cin >> n >> m1 >> m2;
for (int i = 1; i <= m1; i++) {
cin >> gn[i].come >> gn[i].go;
}
for (int i = 1; i <= m2; i++) {
cin >> gj[i].come >> gj[i].go;
}
sort(gn + 1, gn + m1 + 1, cmp);
sort(gj + 1, gj + m2 + 1, cmp);
for (int i = 1; i <= m1; i++) {
for (int j = 1; j <= n; j++) {
if (tmp[j] <= gn[i].come) {
tmp[j] = gn[i].go;
gnlq[j]++;
break;
}
}
}
memset(tmp, 0, sizeof tmp);
for (int i = 1; i <= m2; i++) {
for (int j = 1; j <= n; j++) {
if (tmp[j] <= gj[i].come) {
tmp[j] = gj[i].go;
gjlq[j]++;
break;
}
}
}
for (int i = 1; i <= n; i++) {
gnlq[i] += gnlq[i - 1];
}
for (int i = 1; i <= n; i++) {
gjlq[i] += gjlq[i - 1];
}
for (int i = 0; i <= n; i++) {
ans = max(ans, gnlq[i] + gjlq[n - i]);
}
cout << ans;
return 0;
}
廊桥分配题解-CSP-S2021
于 2022-10-22 22:41:33 首次发布