这个应该是贪心吧。。。
#include<stdio.h>
#include<stdlib.h>
struct stick{
int l,w,mark;
}s[5001];
int cmp(const void *a,const void *b)
{
struct stick *c = (struct stick *)a;
struct stick *d = (struct stick *)b;
if(c->l == d->l) return c->w - d->w;
else return c->l-d->l;
}
int main()
{
int i,j,t,n,time,num,p;
while(scanf("%d",&t)!=EOF)
{
while(t--){
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d%d",&s[i].l,&s[i].w);
s[i].mark=0;
}
time=0; num=0; p=0;
qsort(s,n,sizeof(s[0]),cmp);
while(num!=n){
for(i=0;i<n;i++){
if(!s[i].mark){
p=i;
time++;
break;
}
}
for(i=0;i<n;i++){
if(s[i].l>=s[p].l && s[i].w>=s[p].w && !s[i].mark){
s[i].mark=1;
p=i;
num++;
}
}
}
printf("%d\n",time);
}
}
return 0;
}