我一直在努力解决这个问题。
有n个人想要在酒店同一个房间。每个人都希望在自己方便的时间停留在酒店内,但一次只能住一个人。假设房间从上午5点到晚上11点可用。酒店经理从那个房间里的每个人那里收取500卢比。一个人在那个房间里待多久都没关系。我们必须最大化经理的利润。让我们说n = 4,即四个人想要同一个房间。假设第一个人想要从上午6点至8点的房间,第二个人想要从上午7点至8AM的房间,第三个人想要从上午8点至12PM的房间,第四个人想要从上午11点至1PM的房间。
通过观察上图,我们可以轻松地看到经理最多只能允许两个人留下(第一和第三或第一和第四或第二和第三或第二和第四)。因此,他可以获得的最大利润是500 + 500 = 1000卢比。因此,我们必须实现可以找到最大利润值的算法。假设人们只想在早上5点至晚上11点左右的房间,而每个人都希望在几个小时内找到房间。
输入说明:
{<第一人称开始时间>#<第一人称结束时间>,<第二人称开始时间>#<第二人称结束时间>,…………,#}
输出说明:
输出应为最大利润值。
对于问题中考虑的示例,输出为2000。
例子:
输入:
{6 AM#8AM、11AM#1PM、7AM#3PM、7AM#10AM、10AM#12PM、2PM#4PM、1PM#4PM、8AM#9AM}
产量:
2000
看起来像“活动选择问题”的变体。
阅读此《TopCoder教程》以获得出色的解释。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句