题目:
ac情况:
思路:贪心算法+递增子序列。用sort函数对pair数组进行排序,它会自动按照pair.first从大到小,first一样时second从大到小的顺序进行排序。然后统计pair.second的递增序列有几个即可。
#include <iostream>
#include <algorithm>
#include <queue>
#include <bits/stdc++.h>
using namespace std;
pair<int, int> wood[5005];
int main() {
int T,N,i,j,cnt,min;
scanf("%d", &T);
while (T--) {
cnt = 0;
scanf("%d", &N);
for (i = 0; i < N; i++)
scanf("%d%d", &wood[i].first,&wood[i].second);
sort(wood,wood+N);
for (i = 0; i < N; i++) {
if (wood[i].second) {
cnt++;
min = wood[i].second;
wood[i].second = 0;
for (j = i + 1; j < N; j++) {
if (wood[j].second >= min) {
min = wood[j].second;
wood[j].second = 0;
}
}
}
}
printf("%d\n", cnt);
}
return 0;
}