二维求划分序列时,先对其一维进行排序,再对另一维求划分序列
二维比大小时,或者说求其划分序列时
先对其一维进行排序,再对另一维求划分序列
#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; }