友好城市
题解:
这是一个很有意思的题。 说时候开始完全没有想到是LIS模型。
题目中描述的就是这样的一个图片但是要我们满足不相交。
所以我们可以知道,我们对下面一排的序号进行排序过后,我们上面如果由序号大于前面的序号,那么一定是相交的。所以这道题就变成了排序过后求LIS的过程。
#include<bits/stdc++.h>
using namespace std;
const int N=5e3+5;
typedef pair<int,int> PII;
PII p[N];
int f[N];
int main()
{
int n; cin>>n;
for(int i=1;i<=n;i++) cin>>p[i].first>>p[i].second;
sort(p+1,p+1+n);
int res=0;
for(int i=1;i<=n;i++){
f[i]=1;
for(int j=1;j<i;j++){
if(p[i].second>p[j].second) f[i]=max(f[i],f[j]+1);
res=max(res,f[i]);
}
}
cout<<res<<endl;
}