#include<iostream>
#include<stdio.h>
#include<limits.h>
#include<string.h>
#include<algorithm>
#include<cmath>
#define MAX 5010
using namespace std;
struct node
{
int l,w;
node(){};
node(int l,int w):l(l),w(w)
{}
bool operator <(const node b)const
{
if(l==b.l)
return w<b.w;
else
return l<b.l;
}
}wood[MAX];
int dp[MAX];
int main()
{
int ca,n,i,j,l,w;
int ans=0;
scanf("%d",&ca);
while(ca--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d%d",&wood[i].l,&wood[i].w);
sort(wood,wood+n);
for(i=1;i<=n;i++)
dp[i]=INT_MAX;
ans=0;
for(i=n-1;i>=0;i--)
{
j=lower_bound(dp+1,dp+n+1,wood[i].w)-dp;
dp[j]=wood[i].w;
ans=max(ans,j);
}
printf("%d\n",ans);
}
}
poj1065
最新推荐文章于 2016-04-01 00:20:00 发布