树状数组方法介绍概要
树状数组简介
一、前言
我们平日里总是会遇到一些动态的求和问题,一些朴素的方法时间速度上很难让人满意,因此我们需要设计一些算法来解决所遇到的问题。
基本问题
我们下面设法解决这个动态求和问题。
我们定义 N 个整型变量组成的数组 v[1..N],每次操作有两种:
将v[idx] 增加 det
求
朴素解决
朴素的解决这个问题,我们用数组记录当前的数值,然后依次求和。那么操作(1)的复杂度是 O(1),操作(2)的复杂度是 O(idx),令询问数为 Q ,则在最坏情况下为 O(QN)。
这样的复杂度非常不理想,我们要对之优化!
二、倍增,分割和优化
很多时候在处理区间问题的时候,倍增思想都是非常常用的,比如 RMQ和LCA问题,而分割方法也是一个有用的工具,比如线段树。
我们知道线段树是能够解决上面这个基本问题的,但是考虑到线段树的代码比较复杂,这里我们讨论更轻松的方法。
第一个想法
我们发现,在朴素算法中,操作(2)用了很多的时间,我们试着优化这个操作的算法。
参照RMQ的思想,我们可以将一个区间分成一些长度为2的整次幂的小区间。
我们定义f[i][j] 表示区间 [I, i+2^j-1] 的和,那么如果我们能够得到所有 f[i][j] ,那么我们就能够在 O(log N) 的时间里计算出我们需要的和。
具体方法如下:
对于区间 [L,R],我们找到最大的 p ,使得
您可能关注的文档
最近下载
- 2026年辽宁省检察官逐级遴选笔试题目及答案.docx VIP
- 屋面彩钢瓦翻新合同模板.docx VIP
- 20以内加减法口算天天练-每页100题(打印版).docx VIP
- 素养本位下的高中数学大单元整体教学设计实践研究.pptx VIP
- 核心素养下的高中数学大单元教学设计.docx VIP
- 核心素养下的课堂教学.pptx VIP
- 2025-2026学年部编版三年级语文上册全册单元复习课教案(共8个单元).pdf VIP
- 广发证券-泡泡玛特-09992-持续夯实IP为核心的商业框架厚积薄发.pdf VIP
- 《浙江省消防技术规范难点问题操作技术指南(2025版)》.pdf
- 基于核心素养下高中数学课堂教学有效性研究.doc VIP
原创力文档

文档评论(0)