概述:一个走廊南北两排各有200个房间,最近,公司要做一次装修,需要在各个办公室之间搬运办公桌,由于走廊狭窄,办公桌都很大,走廊里一次只能通过一张办公桌。 合理安排,求出完成搬运的最短时间。
思路:将房间号简化为走廊号,不重叠的区域可以并行搬运,重叠的区域需要串行搬运,模拟搬运过程,得出每个走廊号被使用的次数,次数的最大值就是就是最短时间。
感想:本来这道题一直没有思路,老师上课讲了之后就豁然开朗了。
#include<iostream>
#include<algorithm>
#include<fstream>
using namespace std;
int main()
{
//ifstream cin("aaa.txt");
int n,from,to;
cin >> n;
while (n--)
{
int corridor[200] = { 0 };
int ans;
int n1;
cin >> n1;
for (int i = 0; i < n1; ++i)
{
cin >> from >> to;
from = (from + 1) / 2;
to = (to + 1) / 2;
if (from > to) swap(from, to);
for (int i = from; i <= to; ++i)
++corridor[i];
}
int max = 0;
for (int i = 0; i < 200; ++i)
{
max = corridor[i] > max ? corridor[i] : max;
}
cout << max*10 << endl;
}
return 0;
}