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

树状数组笔记

 树状数组,就是这么简单!_哔哩哔哩_bilibili

 c[]是管理数组,也是树状数组

求x的二进制表示下最低位的1及他后面的0构成的值:

lowbit(x)= x&(-x);

管理数组c[i] 的区间长度 :lowbit(i)

c[i]的直接前驱为c[i-lowbit(i)] 即c[i]左侧紧邻的子树的根

c[i]的直接后继为c[i+lowbit(i)] 即c[i]的父节点

c[]的下标从1开始,如果为0则lowbit(0)=0,卡住

计算前缀和:sum[7]=c[7]+c[6]+c[4]                    sum[9]=c[9]+c[8]

对a数组更新:a[i]+k ---> c[5]+k然后c[5]的后继都加k即c[6]+k、c[8]+k

计算区间和:a[i]+a[i+1]+...+a[j] ,即sum[j]-sum[i-1]

int lowbit(int x){//c的区间长度
    return x&(-x);
}
void add(int i , int k){ //点更新 点i加上k
//n为数组长度
    for(;i<=n;i+=lowbit(i))//累加所有后继(父节点)
        c[i]+=k;
}
int sum(int i){//前缀和 a[1]...a[i]
    int ans=0;
    for(;i>0;i-=lowbit(i)) //累加所有前驱
        ans+=c[i];
    return ans;
}
int qjsum(int i , int j){//区间和 ,a[i]+..+a[j]
    return sum(j)-sum(i-1);
}

点更新,从叶子更新到树根,不超过树高O(logn)

前缀和,从节点一直查找前驱,前驱个数不超O(logn)

局限

 

//https://vjudge.net/article/2642

2352 -- Stars 题解Stars_小郑的ac路的博客-CSDN博客

相关文章:

  • 【ffmpeg】SDL视频显示
  • 【JavaEE进阶系列 | 从小白到工程师】正则表达式的语法使用
  • LIO-SAM框架:点云匹配前戏之初值计算及局部地图构建
  • 机器学习实战(5)——支持向量机
  • 手撕前端面试题(Javascript~事件委托、数组去重、合法的URL、快速排序、js中哪些操作会造成内存泄漏......
  • lombok学习
  • Vue操作数组的几种常用方法(map、filter、forEach、find 和 findIndex 、some 和 every)
  • 【Docker】傻瓜式开发
  • <数据结构> - 数据结构在算法比赛中的应用(上)
  • python中的函数和类的区别
  • 【计算机网络】UDP/TCP协议
  • python并发编程 多线程/多进程/协程
  • 【web-攻击用户】(9.5)同源策略:与浏览器扩展、HTML5、通过代理服务应用程序跨域
  • 大数据——Spark-SQL自定义函数UDF、UDAF、UDTF
  • 浅浅的 Cmake
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • JAVA SE 6 GC调优笔记
  • node 版本过低
  • python学习笔记 - ThreadLocal
  • Vue全家桶实现一个Web App
  • 给Prometheus造假数据的方法
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 诡异!React stopPropagation失灵
  • 技术:超级实用的电脑小技巧
  • 跨域
  • 前嗅ForeSpider教程:创建模板
  • 如何设计一个比特币钱包服务
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (42)STM32——LCD显示屏实验笔记
  • (js)循环条件满足时终止循环
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (层次遍历)104. 二叉树的最大深度
  • (九)c52学习之旅-定时器
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • *上位机的定义
  • .net 4.0发布后不能正常显示图片问题
  • .NET gRPC 和RESTful简单对比
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .net专家(张羿专栏)
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • ?php echo ?,?php echo Hello world!;?
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600