因此,我有一些问题是关于如何用尽可能少的教室来安排可能重叠的活动的问题。解决办法如下:
找出最少数量的教室来安排一组活动。根据开始和结束的时间,高效地完成活动。保持两张教室列表:时间t繁忙的房间和t时间空闲的房间。当t是一些活动的开始时间时,将这项活动安排到一个空闲的房间,并将房间移到繁忙的列表中。同样,当活动停止时,将房间移动到空闲列表。一开始是零房间。如果在空闲列表中没有房间,创建一个新房间。 该算法可以通过对活动排序来实现。在每个开始或结束的时间,我们可以安排活动,并在固定时间内在列表之间移动房间。因此,总时间受排序支配,因此是O(n lg n)。
我的问题是
首先,你是如何同时开始和完成活动的?
2)我不太明白如何能够在固定时间内在列表之间移动房间。如果你想把房间从繁忙的列表移到空闲的列表中,你不需要在繁忙列表中的所有房间中迭代,看看哪些房间的结束时间已经过去了?
3)是否有什么‘状态’变量,我们需要跟踪,同时,这样做,使它的工作?
发布于 2012-11-27 09:57:57
https://stackoverflow.com/questions/13580789
复制相似问题