当前位置: 首页 > news >正文

关于树状数组(略)

查询和修改

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,这样会陷入死循环。

http://www.jsqmd.com/news/334488/

相关文章:

  • STAR-CCM+与Simcenter 3D、HEEDS等工具许可证协同管理策略
  • 二项式定理二项式反演
  • 唯一完测!涛思数据 TDengine IDMP 全项完成中国信通院基于 AI 大模型的时序数据管理平台测试
  • 开题报告基于Java-web的博客网站
  • 【图像压缩】基于matlab传统方法和深度学习方法静止图像压缩编码【含Matlab源码 15041期】复现含文献
  • 【导弹】基于matlab计算战场中发射的烟幕干扰弹对来袭导弹干扰时间【含Matlab源码 15038期】
  • BigemapPro专题制图 | 三步完成城市土地利用类型图
  • Altium许可证管理决策支持报告体系
  • C++中的适配器模式实战
  • 电商防关联浏览器有哪些?有什么好用的电商浏览器推荐? - Roxy指纹浏览器
  • 分布式 ID 生成:雪花算法原理、实现与 MyBatis-Plus 实战
  • 2026广州GEO服务商甄选指南:算法精准度与转化效能测评
  • WPF子窗口因为大小变动和区域限制导致闪烁的解决方案
  • pyspark添加一列时间戳数据并改名
  • SSM毕设项目:基于ssm的智能密室逃脱信息管理系统的设计与实现(源码+文档,讲解、调试运行,定制等)
  • 大数据领域存算分离:优化数据查询性能
  • 张量(Tensor)深度解析:从标量到高维数组的完整指南
  • MDN全面接入Deno兼容性数据:现代Web开发的“一张图”方案
  • 《双模型零GC框架:业务逻辑层设计与实践手册》
  • HBase与DataX:异构数据源同步工具
  • 分布式系统容错设计
  • 《性能衰减智能捕捉:采样式回归测试设计指南》
  • P1802 5 倍经验日
  • 【AI大模型舆情分析】微博舆情分析可视化系统(pytorch2+基于BERT大模型训练微调+flask+pandas+echarts) 实战(下)
  • [大模型实战 02] 图形化的大模型交互: Open WebUI部署指南
  • 【PINN回归预测】基于遗传优化算法GA改进物理信息神经网络(PINN)的多变量回归预测模型附Matlab代码
  • Kerberos认证
  • 让“入职背调”成为您人才决策的坚实基石
  • 01. 深度学习概述
  • 2025-2026 GEO优化公司哪家强?权威榜单+实战测评,选对不踩坑! - 品牌测评鉴赏家