1
所以我有一些问题解决了调度n个活动的问题,这些问题可能会重叠使用最少量的教室。解决的办法是如下:贪婪算法的实现
找到最小数量的教室安排一组活动S在要通过活动,根据开始和结束的时间做到这一点efefficiently 举动。维护两个教室列表:在时间t时繁忙的房间和在时间t时空闲的房间。当t是开始时间 某些活动将此活动安排到免费房间并将房间移至忙碌列表。 同样,当活动停止时,将房间移至空闲列表。最初从零房间开始。如果 空闲列表中没有房间,则创建一个新房间。
该算法可以通过排序活动来实现。在每个开始或结束时间,我们可以通过 安排活动并在固定时间之间移动列表间的房间。总的时间是 排序主导,因此是O(n lg n)。
我的问题是
1)首先,你如何通过活动移动双方开始并在同一时间完成的时间?
2)我不太了解如何在固定时间内移动列表间的房间。如果您想将房间从繁忙列表移动到空闲列表,那么您是否必须遍历忙列表中的所有房间,并查看哪些房间的结束时间已经过去?
3)是否有任何'状态'变量,我们需要跟踪,这样做,使其工作?
因此,大厅本身不必与彼此链接在一起,他们只需要链接到事件,这些事件又与开始和结束时间相关 – user1855952
@ user1855952:应该仍然是大厅在2个列表中的1个列表中,指出它们是使用还是免费,以便在按时间排序的事件列表中看到“开始活动”项目时,始终可以抓住一个空闲的大厅(只需拿起第一个免费清单)。当你说“链接到”时,我不知道你指的是哪个方向:我的意思是开始和结束时间对象指向事件对象,它指向了大厅对象。 –