是否存在表示一大组S(64 位)整数的数据结构,它以空开头并支持以下两个操作:
insert(s)将数字s插入S;minmod(m)返回最小的数字s。Ss mod m
一个例子:
插入(11)
插入(15)
minmod(7) -> 答案是 15(mod 7 = 1)
插入物(14)
minmod(7) -> 答案是 14(mod 7 = 0)
minmod(10) -> 答案是 11(其中 mod 10 = 1)
我有兴趣最小化花费在一系列n此类操作上的最大总时间。显然可以只为每个操作维护一个元素列表S并遍历它们;minmod然后 insert isO(1)和 minmod is O(|S|),这将花费O(n^2)时间进行n操作(例如,n/2 insert操作后面的n/2 minmod操作将需要粗略的n^2/4操作)。
O(n^2)那么:是否有可能比一系列操作做得更好n?也许O(n sqrt(n))或O(n log(n))?如果这是可能的,那么我也很想知道是否有数据结构另外允许从 中删除单个元素S,或者删除一个区间内的所有数字。