zkw线段树学习笔记

先%一下zkw。sto zkw orz


zkw线段树是一个改良版的线段树。其功能与传统线段树相同,也是用于维护区间信息。但是zkw线段树有很多优点:

  1. 代码简短;
  2. 纯天然非递归;
  3. 常数小(尤其在差分区间更新时)

特点:堆式储存,找父亲只需右移一位。


建树

和线段树一样,父节点左移一位为左儿子,再+1(或者|1)为右儿子。

我们知道,最底层实际上存的是原数组,同时由于堆式储存的特性,序号也是顺序排列的,也就是说当我们需要查询或修改时,只需在原数组序号上加上一个数,设为m吧。

for(m=1;m<n;m<<=1);

实际上,m为最底层所有节点的父节点总数,所以只需设m为1,不断左移,当m>=n时停止。

zkw线段树建树的方式就是首先输入叶子结点的信息然后再一路向上传递信息,直到根结点。


单点修改

比较 easy


留坑,noip后回来填。

posted @   lxg_swrz  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示