POJ1083 Moving Tables

一个过道,两边是要移动桌子的房间,过道很窄,每次只能移动一张桌子。问最快的移动时间是多少。

思路:其实就是占用的问题,每次移动都占用固定的几个格子。只要统计一下占用次数最多的格子数量,再乘以10即可。


#include<iostream>
#include<algorithm>
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)
using namespace std;
const int N=205;
int room[N];
int n;
int ans;
void swap(int &a,int &b)
{
	int t=a;
	a=b;
	b=t;
}
int main()
{
	int cases,a,b;
	scanf("%d",&cases);
	while(cases--)
	{
		memset(room,0,sizeof(room));
		ans=0;
		scanf("%d",&n);
		for(int i=1;i<=n;i++)
		{
			scanf("%d%d",&a,&b);
			if(a>b)
				swap(a,b);
			for(int i=(a+1)/2;i<=(b+1)/2;i++)
			{
				room[i]++;
			}
		}
		for(int i=1;i<=200;i++)
			if(ans<room[i])
				ans=room[i];
		printf("%d\n",ans*10);
	}
	return 0;
}


你可能感兴趣的:(POJ1083 Moving Tables)