news 2026/2/12 17:14:28

关于树状数组(略)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
关于树状数组(略)

查询和修改

long long ask(int x) {//查询a[1]+a[2]+...a[x]的值 long long ret = 0; for (int i = x; i; i -= lowbit(i)) ret += C[i]; return ret; } void add(int x, int d) {//将 x 增加 d for (int i = x; i <= n; i += lowbit(i)) C[i] += d; }

查询是减法,因为分解;修改是加法,因为包含这个数的所有数(范围内)都要随之改变。

注意:

  • lowbit(i)=i & (-i)(保留二进制最低位的1
  • 管辖范围=[i - lowbit(i) + 1, i]
  • 区间长度=lowbit(i)

该结构满足以下性质:

  1. 每个内部节点 c[x] 保存以它为根的子树中所有叶节点的和。
  2. 每个节点x管辖的区间长度 =lowbit(x),范围是[ i−lowbit(i)+1,i ] 。
  3. 除树根外,每个内部节点 c[x] 的父节点是 c[x + lowbit(x)] 。
  4. 树的深度为 O(logN) 。

1.对某个元素进行加法操作
树状数组支持单点增加,意思是给序列中的某个数A[x]加上y,同时正确维护序列的前缀和。根据上面给出的树形结构和它的性质,只有节点x及其所有祖先节点保存的区间和包含A[x],而任意一个节点的祖先至多只有logN个,我们逐一它们的值进行更新即可。下面的代码在O(logN)时间内执行单点增加操作。

void update(int x, int y) { for (; x <= N; x += x & -x) c[x] += y; }

另一种写法

void update(int x, int y) { while(x<=n){ c[x]+=y; x=x+(x&-x); } }

2.查询前缀和
树状数组支持查询前缀和,即序列A第1至x个数的和。按照我们刚才提出的方法,应该求出x的二进制表示中每个等于1的位,把[1,x]分成O(logN)个小区间,而每个小区间的区间和都已经保存在数组c中。下面的代码在O(logN)时间内查询前缀和。

int sum(int x) { int ans = 0; for (; x; x -= x & -x) ans += c[x]; return ans; }

另一种写法

int sum(int x) { int ans = 0; while(x>0){ ans+=c[x]; x=x-(x&-x); } return ans; }

若求sum(7) = c[7] + c[6] + c[4]

3.统计A[x]...A[y]的值
调用以上的sum操作:sum(y) - sum(x - 1)

4.注意事项
要注意树状数组能处理的是下标为1..n的数组,绝对不能出现下标为0的情况,因为lowbit(0) = 0,这样会陷入死循环。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/12 7:44:56

BigemapPro专题制图 | 三步完成城市土地利用类型图

GIS专题图——城市土地利用类型图制作教程&#xff0c;按以下流程操作&#xff0c;即可高效生成符合规范的城市土地利用类型专题图。 一、数据准备 准备矢量数据&#xff1a;需使用shp格式的城市用地分类数据 建议先行裁剪&#xff1a;原始数据体量较大时&#xff0c;右键点击…

作者头像 李华
网站建设 2026/2/12 12:46:12

2026年AI开发平台的终极竞争——生态与开发者心智

当技术功能逐渐同质化&#xff0c;2026年AI开发平台的竞争将上升到生态与开发者体验的维度。谁能为开发者创造最大价值&#xff0c;谁能构建最繁荣的应用生态&#xff0c;谁就将赢得未来。这对企业意味着&#xff0c;在思考AI开发平台怎么选时&#xff0c;必须评估其“生态健康…

作者头像 李华
网站建设 2026/2/8 12:52:26

让“入职背调”成为您人才决策的坚实基石

在竞争激烈的人才市场&#xff0c;一次误聘不仅带来高昂成本&#xff0c;更可能影响团队稳定与企业声誉。传统的背景调查方式耗时长、信息零散、核实困难&#xff0c;让招聘工作充满不确定性。 江湖背调&#xff0c;为您提供高效、可靠、合规的一站式解决方案。系统深度对接权威…

作者头像 李华
网站建设 2026/2/11 9:03:24

MDN全面接入Deno兼容性数据:现代Web开发的“一张图”方案

从“双轨”到“一图”&#xff1a;Deno兼容性数据正式落地MDN Deno官方博客的一则简短公告&#xff0c;却让前端开发者群体瞬间沸腾——Deno的兼容性数据现在与MDN Web API图表同框显示。这意味着&#xff0c;过去需要分别查看Node.js、Chrome、Firefox以及Deno四条兼容曲线的…

作者头像 李华
网站建设 2026/2/8 12:19:19

WordPress 在哪里存储网站上的图片?

作为 WordPress 用户&#xff0c;你是否想过图片文件到底存储在哪里&#xff1f;或者如何更高效地管理这些图片文件&#xff1f;在这篇文章中&#xff0c;我们将详细讲解 WordPress 是如何存储图片的&#xff0c;如何修改图片存储方式&#xff0c;以及如何整理和让用户上传图片…

作者头像 李华