首页 > 其他分享 >[学习笔记]树状数组

[学习笔记]树状数组

时间:2024-02-22 14:24:08浏览次数:28  
标签:单点 修改 树状 笔记 circ 数组 区间

1.引入

树状数组是一种支持 单点修改 和 区间查询 的,代码量小的数据结构。(我只看到了代码量小

什么是「单点修改」和「区间查询」?

假设有这样一道题:

已知一个数列 a,你需要进行下面两种操作:

「单点修改」:给定 \(x, y\),将 \(a[x]\) 自增$ y$。
「区间查询」:给定 \(l, r\),求解 \(a[l \ldots r]\) 的和。
类似地,还有:「区间修改」、「单点查询」。它们分别的一个例子如下:
区间修改:给定 \(l, r, x,\)将 $a[l \ldots r] $中的每个数都分别自增 \(x\);
普通树状数组维护的信息及运算要满足 结合律可差分,如加法(和)、乘法(积)、异或等。
结合律:$$(x \circ y) \circ z = x \circ (y \circ z)$$,其中 $$\circ$$ 是一个二元运算符。

标签:单点,修改,树状,笔记,circ,数组,区间
From: https://www.cnblogs.com/Doraemon-Blog/p/18027220

相关文章

  • Vue学习笔记8--MVVM
     总结:MVVMM:模型Model,对应data种的数据V:视图View,模版     VM:视图模型ViewModel,Vue实例对象观察发现:data种所有的属性,最后都出现在vm身上。vm身上所有的属性及Vue原型上所有属性,在Vue模版种都可以直接使用。示例如下所示:<!DOCTYPEhtml><htmllan......
  • XXE笔记
    搭建环境搭建xxe环境dockerpullrrodrigo/xxelabdockerrun-d--name="xxe"-p80:80rrodrigo/xxelabXXE原理当允许引用外部实体时,可通过构造恶意的XML内容,导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等后果。一般的XXE攻击,只有在服务器有回显或者报错......
  • Yolov5学习笔记
    2024.2.201、混淆矩阵Precision:选择的点中预测正确的占多少Recall:正确的点中有多少被选择2、IoU实际的物体所占空间,与预测的物体所占空间的交并比。......
  • dp 学习笔记 (2024/2/22 - )
    计数[ARC107D]NumberofMultisets[ARC104D]MultisetMean大值域限制偏序计数[CF1295F]GoodContest[ARC104E]RandomLIS......
  • 《程序是怎么跑起来的》第1章读书笔记
    作为程序是怎么跑起来的第1章内容,这本书首先向我们介绍了什么是CPU,告诉了程序员这一基本内容,我也了解到寄存器是程序的描述对象,而CPU就是寄存器的集合体。而CPU也被人比作是计算机的大脑,它是由寄存器控制器运算器和时钟4个部分组成的,他们之间通过电流信号相互联通,而它们各自的用途......
  • Vue学习笔记7--el和data的两种写法
    方式一:eldata  //方式一:eldata//constone=newVue({//el:'#root',//data:{//name:'vue',//mydata://{//oneAtt:'我是一个嵌套对象的属性哦',//......
  • Vue学习笔记6--数据绑定
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Vue数据绑定</title>......
  • 网络流学习笔记
    零、基本概念直接走OIwiki或者看蓝书吧。一、Ford-Fulkerson增广“该方法运用贪心的思想,通过寻找增广路来更新并求解最大流。”主要流程就是每次选一些增广路,以来更新最大流。但这个贪心思路不一定能保证正确性。Ford-Fulkerson增广的核心技术是通过设置反向边来实现反......
  • 【学习笔记】关于数论与平面几何的一切
    快速幂人话求\(a\)的\(n\)次方,其实就是根据二进制唯一分解定理给\(a^n\)拆成\(\log{n}\)个\(a^{2^i}\),递推求出从\(a^0\)到\(a^{2^i}\)每个数,如果\(n\)的二进制第\(i\)位为1,则将答案乘上\(a^{2^i}\)llQpow(lla,llb){//一开始a就是a的一次方llans=1;while(b......
  • Go语言精进之路读书笔记第32条——了解goroutine的调度原理
    Go的运行时负责对goroutine进行管理,所谓的管理就是“调度”。调度就是决定何时哪个goroutine将获得资源开始执行,哪个goroutine应该停止执行让出资源,哪个goroutine应该被唤醒恢复执行等。32.1goroutine调度器将goroutine按照一定算法放到CPU上执行的程序就称为goroutine调度器(g......