实质就是求最大重叠度,难点是奇数房和偶数房是对应的,如1和2是对应的,3和4是对应的,共用一段走廊,要这样处理:(i+1)/2。如3到4,4到5,重叠度是2。陷阱是区间可能从大到小。
AC代码:
#include<iostream>
using namespace std;
#define NUM 405
int a[NUM];
int main()
{
int cases,n,s,t,iMax,i,j;
cin>>cases;
while(cases--){
cin>>n;
iMax=1;
for(i=0;i<NUM;++i){
a[i]=0;
}
for(i=0;i<n;++i){
cin>>s>>t;
if(s>t){
int temp=t;
t=s;
s=temp;
}
/*
for(j=s;j<=t;j=j+2){
a[(j+1)/2]++;
}
*/
s=(s+1)/2;
t=(t+1)/2;
for(j=s;j<=t;j++)
a[j]++;
}
for(i=0;i<NUM;++i){
if(iMax<a[i])
iMax=a[i];
}
iMax=iMax*10;
cout<<iMax<<endl;
}
return 0;
}