您的位置:首页 > 其它

POJ 1083 Moving Tables(模拟)

2009-12-24 23:40 477 查看
题目陷阱:

一、输入的两个房间号不一定是从小到大,因此若第一个大于第二个需要SWAP

二、2和3,4和5不能同时过,因为占用了3这个过道,而1和2,3和4就能同时通过

解法:

将房间号进行转化,转化成可以用200个位置来代表过道。

开个数组代表房间,对过道重复的进行标记,数组中最大数则为所求。

#include<iostream>
using namespace std;
int					main()
{
int				room[201],n,max,r1,r2,test;
const int		time = 10;
cin >> test;
while(--test+1)
{
cin >> n;
memset(room,0,sizeof(room));
max = -1;
while(--n+1)
{
cin >> r1 >> r2;
if(r1 > r2)	swap(r1,r2);
r1 = (r1 - 1)/2;//将房号转化为一列
r2 = (r2 - 1)/2;
for(int i = r1; i <= r2;++i)
{
++room[i];
}
}
for(int i = 1;i <= 200;++i)
{
if(room[i] > max)
max = room[i];
}
cout << time * max << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: