所以我有一些问题可以解决调度n活动的问题,这些活动可能会使用尽可能少的课堂重叠。解决方案如下:
找到最少数量的课堂来安排一系列活动。有效地完成这项工作 根据开始和结束时间进行活动。保留两个教室列表:在时间t忙的房间和在时间t免费的房间。当t是开始时间 对于某些活动,将此活动安排到免费房间并将房间移动到忙碌列表。 同样,在活动停止时将房间移动到空闲列表。最初从零房间开始。如果 免费清单中没有房间可以创建一个新房间。
可以通过对活动进行排序来实现该算法。在每个开始或结束时我们都可以 安排活动并在恒定时间内在列表之间移动房间。因此总时间 以排序为主,因此是O(n lg n)。
我的问题是
1)首先,您如何同时通过开始和结束时间来完成活动?
2)我不太明白如何在不断的时间内在列表之间移动房间。如果您想将房间从忙列表移动到空闲列表,您是否必须遍历忙列表中的所有房间并查看哪些房间已经过了结束时间?
3)在执行此操作时,是否有任何“状态”变量需要跟踪以使其正常工作?
答案 0 :(得分:2)