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

树状数组基础知识

lowbit:

lowbit(x)=x&(-x)

树状数组:

树状数组的功能:

数组a_{1} a_{2} a_{3} a_{4} a_{5}...a_{n}

在O(1)的时间复杂度实现单点加:a_{i}+d

在O(lng n)的时间复杂度实现查询前缀和:\sum_{1}^{x}ai

树状数组的定义:
c_{i}=\sum_{i-lowbit(i)+1}^{i} a_{i}

查询前x项的和操作:

ll query(int x){ll s=0;for( ; x; x-=x&(-x)){s+=c[x];}return s;
}

单点加操作:

//原数组长度为n
void modify(int x,ll s){for(;x<=n;x+=x&(-x)){c[x]+=s;}//如果需要别忘了把元素组对应的一位也进行变换
}

构造一个树状数组:

//原数组长度为n
scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",a+i);modify(i,a[i]);}

在输入元素的每一位时对应的在树状数组的位置加上该值。

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

相关文章:

  • 【3分钟准备前端面试】vue3
  • 【数据采集】亮数据浏览器、亮网络解锁器实战指南
  • 暑期编程预习指南
  • 将带有 商店idr 商品信息的json导入到mongodb后,能不能根据商店id把所有商品全部提取并转为电子表格
  • 深入解析 androidx.databinding.BaseObservable
  • MySQL数据恢复(适用于误删后马上发现)
  • [数据结构】——七种常见排序
  • CPU占用率飙升至100%:是攻击还是正常现象?
  • java如何替换字符串中给定索引的字符
  • 基于RK3588的GMSL、FPDLink 、VByone及MIPI等多种摄像模组,适用于车载、机器人工业图像识别领域
  • Windows 的 MFC开发的使用示例——讲得挺好的
  • Spring4.3.x xml配置文件搜索和解析过程
  • 网络爬虫(一)深度优先爬虫与广度优先爬虫
  • JavaScript懒加载图像
  • Git指令
  • DllImport进阶:参数配置与高级主题探究
  • HTTP与HTTPS协议区别及应用场景
  • Vue2-Vue Router前端路由实现思路
  • 2024 年 亚太赛 APMCM (C题)中文赛道国际大学生数学建模挑战赛 | 量子计算的物流配送 | 数学建模完整代码+建模过程全解全析
  • 客观分析-自己和本科学生之间的差距
  • 清华镜像源
  • 大语言模型测评工具-ChatHub和ChatAll
  • 使用redis分布式锁,不要把锁放在本地事务内部
  • Python学生信息管理系统(完整代码)
  • 【大功率汽车大灯升压方案】LED恒流驱动芯片FP7208升压车灯调光应用,PWM内部转模拟,调光深度1%,无频闪顾虑,低亮无抖动
  • uniapp应用如何实现传感器数据采集和分析
  • 读书笔记-Java并发编程的艺术-第3章(Java内存模型)-第6节(final域的内存语义)
  • Spring AI 1.0.0 新变化,从 0.8.1 如何升级
  • 【机器学习】FFmpeg+Whisper:二阶段法视频理解(video-to-text)大模型实战
  • Java中继承接口和实现接口的区别、接口和抽象类的区别、并理解关键字interface、implements