我遇到了一个调度问题,我正在试图找出一个最适合使用的算法。
酒店拥有一个主题公园,是入住酒店的游客的一大亮点。然而,对于想去主题公园的游客来说,酒店的房间比日票还多。因此,在高峰期,有些人可能无法去主题公园。
我们希望每位游客至少有一次参观主题公园的机会。
如果有争议,我们希望为在酒店停留时间更长的游客提供一天的通行证。
有人能给我指出正确的方向吗?哪种算法最适合这个问题?
不,这不是家庭作业
提前谢谢。
您可以使用优先级队列(PQ)。每天您将客户放入您的(PQ)中,计算优先级为p = 1/r
,其中r
是该客人在酒店的剩余天数。通过这种方式,您每天都会将您的n
通行证赠送给在酒店住宿天数较少的n
客户(如果客户只多住一天,那么她/他必须优先获得通行证,因为只有一种可能性)。如果你有几个客户的p
相等,那么你可以通过查看他们在你酒店的总入住天数来从中进行选择,你会倾向于让这些客户住得更长。
您可以根据客人的入住时间(可能还有客人已经没有通行证的天数)为每位客人分配一个权重或优先级,然后按优先级对客人进行排序。然后,从排序列表的顶部开始发放通行证应该很容易。
您可以为此使用优先级队列。必须根据游客的机会数量和停留天数来安排优先队列。