您的位置:首页 > 其它

POJ 1083 Moving Tables 题解

2017-04-20 16:05 375 查看

题意

一家公司有两排房间,每排200个,编号为从1开始一边为奇数,一边为偶数,都是按顺序排好的,有若干次操作,每一个操作是将一个桌子由一个房间移到另一个房间,这个操作需要占用两个房间之间的走廊(包括两房间前的),每一次操作需要10min,但是所占用空间不相交的操作可以同时进行,问所有操作都做完最少需要多长时间

思路

由于数据范围不大,我们只需考虑走廊每一块需要被经过多少次,最多的次数就是答案,那么我们就用一个数组进行计数,将每次操作的两个房间需要占用的走廊的部分+1,都做完了再统计最大值,最后乘10即可

代码

#include <cstdio>
#include <algorithm>
using namespace std;
int cnt[201];
int main()
{
int T,N,s,t,ans;
scanf("%d",&T);
while(T--)
{
scanf("%d",&N);
for(int i=0;i<N;i++)
{
scanf("%d%d",&s,&t);
if(s>t)
swap(s,t);
for(int j=(s-1)/2;j<=(t-1)/2;j++)
cnt[j]++;
}
ans=0;
for(int i=0;i<200;i++)
if(ans<cnt[i])
ans=cnt[i];
printf("%d\n",ans*10);
for(int i=0;i<200;i++)
cnt[i]=0;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: