(如果和我的做法一样的话)本题目需要在数据输入时进行排序,使每一个航班的到达时刻信息升序排列,否则0 Pts。 附上代码(AC)
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
int SA[100005], SB[100005], T[100005], N, M1, M2, Ans;
struct node{
int A;
int B;
}Val[100005];
bool operator < (node A, node B) {
return A.A < B.A;
}
int main() {
ios::sync_with_stdio(0);
cin >> N >> M1 >> M2;
for (int i = 0; i < M1; i++) {
cin >> Val[i].A >> Val[i].B;
}
sort(Val, Val + M1);
for (int i = 0; i < M1; i++) {
for (int j = 1; j <= N; j++) {
if (T[j] < Val[i].A) {
T[j] = Val[i].B;
SA[j]++;
j = N + 1;
}
}
}
memset(T, 0, sizeof(T));
for (int i = 0; i < M2; i++) {
cin >> Val[i].A >> Val[i].B;
}
sort(Val, Val + M2);
for (int i = 0; i < M2; i++) {
for (int j = 1; j <= N; j++) {
if (T[j] < Val[i].A) {
T[j] = Val[i].B;
SB[j]++;
j = N + 1;
}
}
}
for (int j = 1; j <= N; j++) {
SA[j] = SA[j - 1] + SA[j];
}
for (int j = 1; j <= N; j++) {
SB[j] = SB[j - 1] + SB[j];
}
for (int i = 0; i <= N; i++) {
Ans = max(SA[i] + SB[N - i], Ans);
}
cout << Ans;
return 0;
}