题目链接:http://poj.org/problem?id=1065
//pku1065
#include<iostream>
#include<algorithm>
#include<cstdlib>
using namespace std;
struct Stick
{
int l,w;
};
int cmp(const void *a,const void *b)
{
if((*(Stick*)a).l==(*(Stick*)b).l)
return (*(Stick*)a).w-(*(Stick*)b).w;
return (*(Stick*)a).l-(*(Stick*)b).l;
}
int main()
{
int cas;
cin>>cas;
while(cas--)
{
int n;
cin>>n;
Stick *s=new Stick[n];
int i;
for( i=0;i<n;i++)
cin>>s[i].l>>s[i].w;
qsort(s,n,sizeof(s[0]),cmp);//排除l的干扰
int cnt=0;
//求连续增序列
for(i=0;i<n;i++)
if(s[i].w!=0)
{
int temp=s[i].w;
cnt++;
for(int j=i+1;j<n;j++)
{
if(temp<=s[j].w)
{
temp=s[j].w;
s[j].w=0;
}
}
}
cout<<cnt<<endl;
}
return 0;
}