5.11 ZOJ1029-Moving Tables
这层楼沿着走廊南北向的两边各有200个房间。最近,公司要做一次装修,需要在各个办公室之间搬运办公桌。
由于走廊狭窄,办公桌都很大,走廊里一次只能通过一张办公桌。必须制定计划提高搬运效率。
经理制定如下计划:一张办公桌从一个房间移到另一个房间最多用十分钟。当从房间i移动一张办公桌到房间j,两个办公室之间的走廊都会被占用。所以,每10分钟内,只要不是同一段走廊,都可以在房间之间移动办公桌。
输入
输入数据有T组测试例,在第一行给出测试例个数T。
每个测试例的第一行是一个整数N(1≤N≤200),表示要搬运办公桌的次数。接下来N行,每行两个正整数s和t,表示一张桌子,是从房间号码s移到到房间号码t。
输出
每组输入都有一行输出数据,为一整数T,表示完成任务所花费的最小时间。
在经理给出的说明表格中,已经明确地描述了算法:
(从房间30到50)和(从房间60到90)是允许的,因为没有占用公共的走廊;
(从房间20到40)和(从房间31到80)是不允许的,因为要占用公共的走廊。
我们将每个房间之间的走廊作为一个统计单位,当所有的办公桌都搬运完成之后,看看这段走廊到底需要占用多少次?然后统计所有的走廊被占用的最大值max,这个值就是要单独安排的搬运次数,乘以10就是总的搬运时间。
int i, j;
int move[200];
int N; //搬运次数
int from, to; //每次搬运的起点和终点
scanf(&
贪心算法(2)
最新推荐文章于 2023-01-12 14:21:28 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)