hdu 1050 Moving Tables

很明显,要计算出搬桌子的最短时间,就是算出最多重叠的时间段有多少,

计算重叠的区间的最多的个数,相当于计算数轴上某一个点被堆叠的最多的次数,所以接下来就好理解了

看代码……

#include <iostream> 
using namespace std; 
int main() 
{ 
	int t,i,j,N,P[200];
   int s,d,temp,k,min; 
   cin>>t; 
   for(i=0;i<t;i++) 
      { 
         for(j=0;j<200;j++) 
              P[j]=0; 
         cin>>N; 
  	    for(j=0;j<N;j++) 
            { 
               cin>>s>>d; 
               s=(s-1)/2; //相对的缩短区间长度,提高效率
               d=(d-1)/2;                
             if(s>d) 
                  { temp=s; 
                     s=d; 
                     d=temp; } 
               for(k=s;k<=d;k++) //计算某一个点被重叠的次数
                  P[k]++; 
            } 
         min=-1; 
         for(j=0;j<200;j++) 
            if(P[j]>min) //找出重叠次数最多的点
               min=P[j]; 
         cout<<min*10<<endl; 
      } 
   return 0; 
} 
posted @ 2011-07-27 20:05  枕边梦  阅读(200)  评论(0编辑  收藏  举报