friendly
作者:
恒_41
,
2024-04-19 16:55:42
,
所有人可见
,
阅读 4
#include<iostream>
#include<algorithm>
using namespace std;
typedef pair<int, int> PII;
const int N = 5100;
int n;
PII q[N];
int f[N];
int main() {
cin >> n;
int res = 0;
for (int i = 1; i <= n; i++)
cin >> q[i].first >> q[i].second;
/*
先对南岸的城市坐标排序/q.first,北岸的城市的位置随之改变,
在此基础上要保证q.second是单调递增的,否则会有桥交叉(x<y&&fx>fy)
本题要找出最长上升的q.second序列
*/
sort(q, q + n);//对南岸的城市位置排序
for (int i = 1; i <= n; i++) {
f[i] = 1;
for (int j = 1; j < i; j++) {
if (q[i].second > q[j].second)
f[i] = max(f[i], f[j] + 1);
}
res = max(f[i], res);
}
cout << res << endl;
return 0;
}