题目大意:走廊两边排列了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; }