如果你使用结构体存储节点(也许也适用于别的?)
那么你存储节点的熟读大小是 n×2+(⌈logn⌉+1)×q 由于 n,q 同阶,则可以化简为 n×(3+⌈logn⌉) 当 n=106 时,得到 n×(3+20)=23×n。
此时如果做“开大数组避免错误”的话可能会导致 TLE,为什么?
内存应尽量连续访问,不连续的话会浪费部分时间在计算机切换变量上,此时如果数组开小的话:
若节点(线段树里的)地址是 x,其他辅助数组地址是 y,则若定义顺序依次是 x,y,那么你使用 x 再使用 y 最多跳了整个线段树数组,也就是 23×106。
但是如果你开大数组,比如开了 32×106,此时常数过大会超时。