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;
}

浙公网安备 33010602011771号