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

ACwing算法备战蓝桥杯——Day30——树状数组

定义:

树状数组是一种数据结构,能将对一个区间内数据进行修改和求前缀和的这两种操作的最坏时间复杂度降低到O(logn);

实现所需变量
变量名变量数据类型作用
数组a[]int存储一段区间
数组tr[]int表示树状数组

 

主要操作
函数名函数参数组要作用
lowbit()int x返回x的二进制表示中最低的一位1的位置
add()int x,int v给区间内第x个数加上v
query()int x返回区间前x个数的和
int a[N];
int tr[N];int lowbit(int x){return x&-x;
}void add(int x,int c){for(int i=x;i<=n;i+=lowbit(i)) tr[i]+=c;return;
}int query(int x){int res=0;for(int i=x;i;i-=lowbit(i)) res+=tr[i];return res; 
}

模板题:

题目:动态求连续区间的和

给定 n 个数组成的一个数列,规定有两种操作,一是修改某个元素,二是求子数列 [a,b] 的连续和。输入格式
第一行包含两个整数 n 和 m,分别表示数的个数和操作次数。第二行包含 n 个整数,表示完整数列。接下来 m 行,每行包含三个整数 k,a,b (k=0,表示求子数列[a,b]的和;k=1,表示第 a 个数加 b)。数列从 1 开始计数。输出格式
输出若干行数字,表示 k=0 时,对应的子数列 [a,b] 的连续和。数据范围
1≤n≤100000,
1≤m≤100000,
1≤a≤b≤n,
数据保证在任何时候,数列中所有元素之和均在 int 范围内。输入样例:
10 5
1 2 3 4 5 6 7 8 9 10
1 1 5
0 1 3
0 4 8
1 7 5
0 4 8
输出样例:
11
30
35

代码与题解:

#include <iostream>
using namespace std;const int N=1e5+10;int tr[N];
int a[N];
int n,m;int lowbit(int x){return x&-x;
}void add(int x,int c){for(int i=x;i<=n;i+=lowbit(i)) tr[i]+=c;return;
}int query(int x){int res=0;for(int i=x;i;i-=lowbit(i)) res+=tr[i];return res;
}int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf("%d",&a[i]);}for(int i=1;i<=n;i++){add(i,a[i]);}while(m--){int k,a,b;scanf("%d%d%d",&k,&a,&b);if(k){add(a,b);}else {int anws=query(b)-query(a-1);printf("%d\n",anws);}}    return 0;    
}

 

 

 

http://www.lryc.cn/news/261504.html

相关文章:

  • elementui + vue2实现表格行的上下移动
  • 2、快速搞定Kafka术语
  • CSS新手入门笔记整理:CSS3选择器
  • D34|不同路径
  • 【运维】Kafka高可用: KRaft(不依赖zookeeper)集群搭建
  • Python 自动化之批量处理文件(一)
  • 力扣72. 编辑距离
  • Unity中 URP Shader 的纹理与采样器的分离定义
  • Electron学习第一天 ,启动项目
  • WebService技术--随笔1
  • 如何使用Docker将.Net6项目部署到Linux服务器(一)
  • 第4章-第3节-Java中跟数组相关的几个算法以及综合应用
  • AlexNet(pytorch)
  • 【单调栈 】LeetCode321:拼接最大数
  • TikTok与虚拟现实的完美交融:全新娱乐时代的开启
  • PXI/PCIe/VPX机箱 ARM|x86 + FPGA测试测量板卡解决方案
  • ES6 面试题 | 12.精选 ES6 面试题
  • 【linux】Debian不能运行sudo的解决
  • 讲解ThinkPHP的链式操作
  • Java技术栈 —— 微服务框架Spring Cloud —— Ruoyi-Cloud 学习(二)
  • 如何进行软件测试和测试驱动开发(TDD)?
  • linux 开机启动流程
  • Mybatis 动态SQL的插入操作
  • 共建开源新里程:北京航空航天大学OpenHarmony技术俱乐部正式揭牌成立
  • 企业微信机器人发送文本、图片、文件、markdown、图文信息
  • 智能优化算法应用:基于天牛须算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • 【Hive】【Hadoop】工作中常操作的笔记-随时添加
  • DIY电脑装机机箱风扇安装方法
  • 基础算法(4):排序(4)冒泡排序
  • 鸿蒙开发之网络请求