hxyyyyasd 2019-04-20 18:21 采纳率: 0%
浏览 762

有没有大佬讲一手线段树的区间更新,初学,实在不懂

c语言线段树的区间更新,pushdown函数,lazy标记不懂

  • 写回答

1条回答 默认 最新

  • tiany7 2019-10-17 07:57
    关注

    就是,如果你每次更新到最底下,tree[root].L == tree[root].R的话,这样更新一片长度为N的区间的话,效率是nlongn的,这样还不如创数组一个一个更新。
    但是你如果每次更新都在代表目标区间的范围,比如3-8,你找到3-8对应的节点,然后把这个节点更新了,之后打上inc(个人习惯叫lazy叫inc)
    然后这个节点的意义是告诉之后查询也好更新也好,我在这个3-8更新了数据,但我没更新下去,你到时候如果要更新的话记得带上我这块。
    然后就不用每次更新到树根了,所以时间复杂读差不多还是logN

    评论

报告相同问题?

悬赏问题

  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误