Algorithm 二维段树更新/修改步骤复杂度

Algorithm 二维段树更新/修改步骤复杂度,algorithm,time-complexity,Algorithm,Time Complexity,我很难理解中“修改查询”的复杂性。它在文章的底部声明复杂性为O(2*n*logn*logm)。为什么不仅仅是O(logn*logm)?额外的线性项n从何而来?检查它们的更新实现 def更新(位置、低位、高位、x、y、val): 如果(低==高): 最终更新(1、1、4、x、val、pos) 其他: 中=(低+高)//2 如果(低啊,我没有看到for循环。是的,我认为循环是毫无意义的。虽然有了这个循环,我认为复杂性应该是O(n log m+log n)=O(n log m)啊,你是对的,我一定对m

我很难理解中“修改查询”的复杂性。它在文章的底部声明复杂性为O(2*n*logn*logm)。为什么不仅仅是O(logn*logm)?额外的线性项n从何而来?

检查它们的更新实现

def更新(位置、低位、高位、x、y、val):
如果(低==高):
最终更新(1、1、4、x、val、pos)
其他:
中=(低+高)//2

如果(低啊,我没有看到for循环。是的,我认为循环是毫无意义的。虽然有了这个循环,我认为复杂性应该是O(n log m+log n)=O(n log m)啊,你是对的,我一定对
m
n
@user5965026这篇文章回答了你的问题吗?如果没有,这里缺少什么?
def update(pos, low, high, x, y, val): 
  
    if (low == high) : 
        changes = finalUpdate(1, 1, 4, x, val, pos) 
      
    else : 
        mid = (low + high) // 2
  
        if (low <= y and y <= mid) : 
            changes = update(2 * pos, low, mid, x, y, val) 
  
        else : 
            changes = update(2 * pos + 1, mid + 1,  
                       high, x, y, val) 
  
        for i in changes: 
            fin_seg[pos][i] = (fin_seg[2 * pos][i] +
                               fin_seg[2 * pos + 1][i]) 
    return changes;