将区间按左位置排序,然后统计
还有一种方法就是先把坐标离散话,然后再按照之前的方法处理,这个你可以自己差资料
[ 本帖最后由 czz5242199 于 2011-12-28 15:09 编辑 ]
程序代码:#include <stdio.h>
#include <stdlib.h>
struct Node
{
int start;
int end;
};
int cmp(const void *pa,const void *pb)
{
return ((Node *)pa)->start - ((Node *)pb)->start;
}
Node list[105];
int main()
{
int l,m;
int i,j,k;
while(EOF != scanf("%d%d",&l,&m))
{
for(i = 0;i<m;i++)
scanf("%d%d",&list[i].start,&list[i].end);
qsort(list,m,8,cmp);
int max = list[0].end;
int lost = list[0].start;
for(i = 1;i<m;i++)
{
if(list[i].start > max)
{
lost += list[i].start-max-1;
max = list[i].end;
}
else if(list[i].end > max)
max = list[i].end;
}
printf("%d\n",lost+l-max);
}
return 0;
}
