我们有不同的产品(编号从1到m)。招标开放m天,在这些日子里,n人提出购买要约(每个产品是针对一种产品), 在每天结束时,将出售具有最高报价的产品(形成所有尚未售出的产品)。
我们应该实现一个提供以下操作的数据结构:
我尝试使用斐波纳契堆来解决这个问题:
我们创建一个新的fib堆并插入m次(带有键j和info null的产品)
我在fib堆中使用reduce键的想法,并使用新的p切换信息
我使用delete min的思想来删除max
所以为了解决问题,我认为我应该使用最大堆而不是最小堆,这让我觉得我的方法错了。
有人可以帮助我获得真正的解决方案吗? **
答案 0 :(得分:0)
通过将产品的哈希表保持为最高出价,以及按最高出价排序的产品列表,您可以获得Bid()的O(log M)和Sell()的O(1)。
对于Bid(),您可以根据需要更新表格,并在需要时使用二进制搜索更新列表;对于Sell(),您只需弹出列表中的顶部项目并从地图中获取价格。