偏序定理。
注意
1. 偏序定理。
2. 最长递减子序列的nlogn算法。
3.qosrt是不稳定排序。
代码:
#include<iostream>
#include<fstream>
using namespace std;
struct e{
int w,h;
};
e a[20001];
int n;
int b[20001];
int cmp(const void *a,const void *b){
if(((e *)b)->w-((e*)a)->w!=0)
return ((e *)a)->w-((e*)b)->w;
else
return ((e*)b)->h-((e*)a)->h;
}
int find(int s,int value){
int i=0,k;
while(i<=s)
{
k=(i+s)>>1;
if(b[k]<value) s=k-1;
else i=k+1;
}
return s;
}
void read(){
// ifstream cin("in.txt");
int i,j,k,m;
cin>>k;
while(k--)
{
cin>>n;
for(i=0;i<n;i++)
cin>>a[i].w>>a[i].h;
qsort(a,n,sizeof(a[0]),cmp);
m=0;
b[0]=a[0].h;
for(i=1;i<n;i++)
{
j=find(m,a[i].h);
b[j+1]=a[i].h;
if(j+1>m) m=j+1;
}
cout<<m+1<<endl;
}
}
int main(){
read();
return 0;
}