二维求划分序列时,先对其一维进行排序,再对另一维求划分序列
二维比大小时,或者说求其划分序列时
先对其一维进行排序,再对另一维求划分序列
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int const mod=1e6+7;
int const N=1e6+7;
int n;
struct L{
int l,w;
}a[N];
bool cmp(L a,L b){
return a.l!=b.l?a.l>b.l:a.w>b.w;
}
vector<int>v;
int main(){
cin >> n;
for(int i=1;i<=n;++i){
cin >> a[i].l >> a[i].w;
}
sort(a+1,a+n+1,cmp);
v.push_back(a[1].w);
for(int i=2;i<=n;++i){
int z=lower_bound(v.begin(),v.end(),a[i].w)-v.begin();
if(z==v.size()) v.push_back(a[i].w);
else v[z]=a[i].w;
}
cout << v.size();
return 0;
}
