1

我正在尝试解决以下算法问题:

假设我们有一个数据结构,允许我们插入元素并删除和写入最小元素。假设我们知道一系列n命令,所有这些命令要么是I(k)(插入 k)要么是D(删除最小值并输出它)。

我们的任务是为每个D命令决定它将返回哪个数字。例如,对于序列:

I(2) D I(5) I(4) I(3) D D I(1) D D

结果应该是

2 3 4 1 5

目标(或提示)是比复杂性更好O(nlog(n)),使用 Find-Union 数据结构,它允许我们在 中进行nmake-sets、finds 和 unions O(na(n)),其中a(n)是逆 Ackermann 函数。

这不是家庭作业 - 我正在准备考试,并且已经在这个练习中遇到了几个多小时的困难。

我将不胜感激任何进一步的提示

编辑:我忘了添加一个关键假设。我们插入的所有数字都来自范围 1..n

进一步编辑:事实证明我不是第一个遇到这个问题的人;它被称为离线最小问题,任何有兴趣的人都可以在此处进一步阅读

4

0 回答 0