题目大意:走廊两边排列了400个房间,要在两个房间之间搬桌子。搬桌子的时候会占用一部分走廊,有冲突的话要回避。求最快搬完的时间。
解法:开辟一个数组,每占用一段走廊,就把相应的房间号的元素加1,最后整个数组中最大的数就是结果。注意,房间是排列在走廊两边的,所以数组的大小是400/2,而不是200。
参考代码:
#include<iostream> using namespace std; int main(){
int i,m,n,a,b,t; cin>>n;
while(n--){
cin>>m;
int room[201]={0}; //重复使用的寄存器一定要记得把上一次的结果清空
while(m--){
cin>>a>>b;
if(a>b){
t=a;
a=b;
b=t;
}
a=(a+1)/2;
b=(b+1)/2;
for(i=a;i<=b;i++){
room[i]+=1;
}
}
t=room[1];
for(i=2;i<201;i++){
if(room[i]>t)
t=room[i];
}
cout<<t*10<<endl;
} return 0;
}