原题链接:https://www.acwing.com/problem/content/1014/
解题思路:先按照南岸的坐标对所有城市进行排名,然后计算北岸城市的最长不下降子序列,因为南岸按递增顺序排好之后,北岸的城市坐标如果递增,那么桥一定不相交
#include<iostream>
#include<algorithm>
#include<queue>
using namespace std;
const int N = 1e4 + 10;
typedef pair<int, int>PII;
int f[N];
int n;
int main()
{
cin>>n;
PII a[N];
for(int i = 0; i < n; i ++ ){
cin>>a[i].first>>a[i].second;
}
sort(a, a + n);
int res = 0;
for(int i = 0; i < n; i ++ ){
f[i] = 1;
for(int j = 0; j < i; j ++ ){
if(a[i].second > a[j].second){
f[i] = max(f[i], f[j] + 1);
}
}
res = max(f[i], res);
}
cout<res<<endl;
return 0;
}