分析:
先按结束时间进行排序,结束时间越早,安排活动越多,在将开始时间与上一个结束时间进行比较
先按结束时间进行排序,结束时间越早,安排活动越多,在将开始时间与上一个结束时间进行比较
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct In{
int x;
int y;
};
In pos[10010];
int cmp(const void *a,const void *b)
{
In *c=(In *)a;
In *d=(In *)b;
if(c->y!=d->y) return c->y-d->y;
else return d->x-c->x;//结束时间相等时,开始时间的排列顺序无所谓,从大到小or从小到大都可以
}
int main()
{
int n,m,i,t,j;
scanf("%d",&n);
while(n--)
{
memset(pos,0,sizeof(pos));
scanf("%d",&m);
for(i=0;i<m;i++)
scanf("%d%d",&pos[i].x,&pos[i].y);
qsort(pos,m,sizeof(pos[0]),cmp);
j=pos[0].y;
for(t=i=0;i<m;i++)
if(pos[i].x>j)
{t++;j=pos[i].y;}
printf("%d\n",t+1);
}
return 0;
}