problem A

著名的ACM公司租了一栋建筑的一楼用来办公,楼层形状如下。

Room

1

Room

3

Room

5

。。。

Room

397

Room

399

 

Room

2

Room

4

Room

6

。。。

Room

398

Room

400

这层楼南北各200间房分布在走廊的两侧,最近这个公司想要改革制度,这项改革包括在房间之间移动很多桌子。因为走廊很窄桌子很大,所以某一时刻只有一张桌子能通过走廊。需要算法使桌子在房间之间高效地移动,经理想出了以下方案:移动一张桌子从一个房间到另一个房间至少需要10分钟,当从房间i向房间j移动桌子时,房间i到房间j之间的走廊就被占用了。所以,在10分钟之内,两房间之间的任何桌子移动都是不被允许的,为了使问题明确,经理举例说明了同时移动的可能情形和不可能情况。

 

Table moving

原因

可能情况

房间3050和房间6090

没有共享走廊

房间1112和房间1413

没有共享走廊

不可能情况

房间2040和房间3180

房间3140前面的走廊被共享

房间14和房间36

房间34前面的走廊被共享

房间28和房间710

房间78前面的走廊被共享

对于每个房间,最多有一张桌子被移入或移出。现在经理寻要找到了一种方法在最短的时间内移动所有的桌子,你的任务是写一个算法去解决经理的问题。

输入:

输入包含T组测试数据,T在输入的第一行被给出。每一组测试数据以一行正整数N开始,1<=N<=200N代表移动桌子的数目,每一个N后面跟着两个位置整数st,代表桌子从房间s移动到房间t(在一个N后面每一个房间的号码最多出现一次),从第N+3行开始剩余的测试案例用像上面同样的方式列出即可。

输出:

输出应包含使移动桌子任务完成的最小时间,每个一行。

样例输入:

3

4

10  20

30  40

50  60

70  80

2

1  3

2  200

3

10  100

20  80

30  50

样例输出:

10

20

30

 

 

贪心算法步骤

1.写一个struct类型的数据结构

2cmp函数

3while输入

4排序函数

5for循环判断相容性

6输出

经过分析后,此题与活动安排问题相似。此题的房间i和房间j,相当于活动安排问题的起始时间s和结束时间f,两者的区别是对两段重叠后的处理,前者对于重叠的是保留且计数,后者只对不重叠的部分保留。

觉得这样的题都可以转换成带有开始和结束的段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值