///在discuss中看到的方法,将走廊分成200份,统计每一份的次数,最大的乘以10即是结果 ///我的理解是,所有的搬运任务最终都会完成,同一门前同一时间内最多有一张table在搬运 ///,因此200份中最大的代表用的最少的时间。这最少是指每一个10分钟都要用到最大的那个 ///门前,如果有一次不用的话,时间则有可能会增加 ///还有一种方法就是将s按从小到大的顺序排列后按s进行贪心。 #include<stdio.h> #include<string.h> #include<time.h> int f[205]; int num[205][2],t,n,temp[2]; int *get_from_to(int *p) { int from,to,i; if(p[0]%2) temp[0]=(p[0]+1)/2; else temp[0]=p[0]/2; if(p[1]%2) temp[1]=p[1]/2+1; else temp[1]=p[1]/2; if(temp[0]>temp[1]) { i=temp[0]; temp[0]=temp[1]; temp[1]=i; } return temp; } int count(int *p) { int i,j; int *k; k=get_from_to(p); for(j=k[0];j<=k[1];j++) { f[j]++; } return 0; } int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int test; scanf("%d",&test); while(test--) { int i,j; t=0; scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d%d",&num[i][0],&num[i][1]); memset(f,0,sizeof(f)); for(i=1;i<=n;i++) { count(num[i]); } for(i=1;i<=200;i++) if(f[i]>t)t=f[i]; //printf("%d %lf/n",t*10,clock()/(double)CLOCKS_PER_SEC); printf("%d/n",t*10); } return 0; }