很明显,要计算出搬桌子的最短时间,就是算出最多重叠的时间段有多少,
计算重叠的区间的最多的个数,相当于计算数轴上某一个点被堆叠的最多的次数,所以接下来就好理解了
看代码……
#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; }