是否存在表示一大组S
(64 位)整数的数据结构,它以空开头并支持以下两个操作:
insert(s)
将数字s
插入S
;minmod(m)
返回最小的数字s
。S
s 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
,或者删除一个区间内的所有数字。