AcWing 1012. 友好城市
原题链接
简单
作者:
我呼吸了
,
2022-05-12 14:24:27
,
所有人可见
,
阅读 9
/*
不妨设各个友好城市对(x,y)
转化:可以将这些成对的友好城市,按照其中一个数(x)进行排序,排序完成后可以发现如果要满足题意,
选择的时候y必须是单调上升的,至此本问题可以转换为最长上升子序列问题求解
*/
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef pair<int,int> pii;
const int N = 5010;
pii a[N];
int f[N];
int n;
int main()
{
cin >> n;
for(int i = 1; i <= n; i++) cin >> a[i].x >> a[i].y;
sort(a+1,a+1+n);
for(int i = 1; i <= n; i++)
{
f[i] = 1;
for(int k = 1; k < i; k++)
{
if(a[k].y < a[i].y) f[i] = max(f[i],f[k]+1);
}
}
int res = -1;
for(int i = 1; i <= n; i++) res = max(res,f[i]);
cout << res << endl;
return 0;
}