我有一个不一定要排序的数组。我必须对它执行Q查询。查询如下:给定数组和索引I,我必须更新该数组中从索引i+1到n的所有元素,以便AI>Aj。查询是相互依赖的,即对查询1的更改将反映在查询2中。
对每个查询所做的更改如下:
for j=I+1 to N:
if A[j]<A[I]:
A[j]=0我不知道如何处理这个问题。我在想一些类似二元索引树的东西。但我不确定。在提示中,它说要使用高级排序算法。
发布于 2019-09-15 14:07:11
以下是O((q+n) log n)方法:
这似乎很慢,因为对于每个查询,我们可能在段树中进行n次更新,但是我们可以注意到,每个元素最多只能标记一次,所以最糟糕的情况是O((q+n) log n)。
https://stackoverflow.com/questions/57944414
复制相似问题