ZOJ 1029 Moving Tables

原题链接

题目大意:走廊两边排列了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;
}
原文地址:https://www.cnblogs.com/naive/p/3568722.html