首页 > 其他分享 >树状数组基础

树状数组基础

时间:2023-02-06 18:31:08浏览次数:38  
标签:10 树状 int 基础 查询 数组 ans


树状数组(Binary Indexed Tree(BIT), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构。主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值;经过简单修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其中一个元素的值。

对于

10个数1到10,关于树状数组的建立:

x           x*(-x)lowbit           第三行对应的x前lowbit位的之和
1            1           1
2            2            3
3            1           3
4            4           10
5            1           5
6           2           11
7            1            7
8            8           36
9            1             9
10          2           19

构建树状数组
void add(int x,int num){//构建数组
while(x<=n){
c[x]+=num;
x += x&(-x);
}
}
查询树状数组
int query(int x){//统计前x的和是多少
int ans = 0;
while(x>0){
ans+=c[x];
x-= x&(-x);
}
return ans;
}


标签:10,树状,int,基础,查询,数组,ans
From: https://blog.51cto.com/u_15955675/6040224

相关文章

  • Java中Lambda表达式基础及使用
    目录一、举例说明1、无参无返回1.1定义一个接口1.2接口实现类1.3测试类2、有参无返回代码示例3、有参有返回二、简单事项1、省略模式2、注意事项三、L......
  • final关键字--Java基础052
    /*final(最终、修饰符)final关键字的用法:1.final关键字修饰一个基本类型的变量时,该变量不能重新赋值,第一次的值为最终的。2.fianl关键字修饰一个引用类型变量时,该......
  • 对象创建的次数--Java基础050
    /*需求:统计一个类被使用了多少次创建对象,该类对外显示被创建的次数。*/classEmp{//非静态的成员变量。staticintcount=0;//计数器Stringname;//构造......
  • instanceof关键字--Java基础051
    /*instanceof关键字instanceof关键字的作用:判断一个对象是否属于指定的类别。instanceof关键字的使用前提:判断的对象与指定的类别必须要存在继承或者实现的关系。instanceo......
  • 重写--Java基础049
    /*目前的问题:父类的功能无法满足子类的需求。方法重写的前提:必须要存在继承的关系。方法的重写:子父类出了同名的函数,这个我们就称作为方法的重写。什么是时候要使用方法......
  • MarkDown基础
    标题#标题二级标题##二级标题三级标题###三级标题字体粗体斜体粗体+斜体删除del**粗体***斜体****粗体+斜体***~~删除~~~~del~~引用本文引用自>......
  • 继承--Java基础047
    /*面向对象的三大特征:1.封装2.继承3.多态.继承:继承是通过关键字extends体现的。继承的格式:class类名1extends类名2{}继承要注意的事项:1.千万不要为了......
  • linux平台makefile文件的编写基础篇
    目的:基本掌握了make的用法,能在Linux系统上编程。环境:Linux系统,或者有一台Linux服务器,通过终端连接。一句话:有Linux编译环境。准备:准备三个文件:fil......
  • String类构造方法与普通方法--Java基础058
    packagetest;publicclassDemo1{publicstaticvoidmain(String[]args){//1对象的比较Stringstr1="hello";Stringstr2="hello";......
  • docker基础
    一、Docker概述1、Docker的概念Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚......