fenwick tree

Ayanami_Reii17 天前
数据结构·算法·线段树·树状数组·离散化·fenwick tree·线段树扫描线
进阶数据结构应用-线段树扫描线计算面积的并集 类似于扫描的思想, 只要是 y y y不连续, 将面积从左到右做细分 设 h 1 = t 0 + t 1 h_1= t_0 + t_1 h1=t0+t1, 同理 h 2 h_2 h2就是下一段的 x x x的差值, 那么总的覆盖面积就是 ∑ i = 1 n h i ⋅ ( y i − y i − 1 ) \sum _{i = 1} ^ n h_i \cdot (y_i - y_{i - 1}) i=1∑nhi⋅(yi−yi−1)
Ayanami_Reii19 天前
开发语言·数据结构·算法·线段树·差分·树状数组·fenwick tree
进阶数据结构应用-区间最大公约数两个操作因为涉及到区间修改和区间查询, 使用线段树 线段树节点信息中需要存储如下信息对于当前区间 u u u, 左儿子是 x x x, 右儿子是 y y y, 那么当前区间的最大公约数等于 u . g c d = gcd ⁡ ( x . g c d , y . g c d ) u.gcd = \gcd(x.gcd, y.gcd) u.gcd=gcd(x.gcd,y.gcd)
Ayanami_Reii20 天前
数据结构·算法·树状数组·fenwick tree
进阶数据结构-FenwickTreel o w i t lowit lowit运算 l o w b i t ( x ) lowbit(x) lowbit(x)是取出 x x x作为二进制数的最后一位 1 1 1对应的十进制数字 例如 l o w b i t ( 1 ) = 1 lowbit(1) = 1 lowbit(1)=1, l o w b i t ( 5 ) = 1 lowbit(5) = 1 lowbit(5)=1, l o w b i t ( 8 ) = 8 lowbit(8) = 8 lowbit(8)=8, l o w b i
Ayanami_Reii21 天前
数据结构·算法·树状数组·fenwick tree
基础数据结构应用-一个简单的整数问题区间修改, 单点查询 但是树状数组只能支持单点修改, 单点查询因此可以求出原序列的差分序列, 假设原序列是 a 1 , a 2 , a 3 , . . . , a n a_1, a_2, a_3, ..., a_n a1,a2,a3,...,an 求出差分序列 b 1 , b 2 , b 3 , . . . , b n b_1, b_2, b_3, ..., b_n b1,b2,b3,...,bn b 1 = a 1 − a 0 b_1 = a_1 - a_0 b1=a1−a0, b 2 = a 2 −
Ayanami_Reii21 天前
数据结构·算法·前缀和·差分·树状数组·fenwick tree
进阶数据结构应用-一个简单的整数问题2(Fenwick-Tree 解法)两个操作首先, 借用一个简单的整数问题思想, 在区间加法的情况下, 可以将原数组转化为差分数组, 进行区间修改操作
摆烂小白敲代码1 年前
c语言·数据结构·c++·算法·树状数组·bit·fenwick tree
详解树状数组(C/C++)树状数组(Binary Indexed Tree,简称BIT或Fenwick Tree)是一种用于高效处理数据序列的算法数据结构。它能够支持两个主要操作:单点更新和区间求和,这两个操作的时间复杂度都能达到O(log n),其中 n 是数据序列的长度。树状数组非常适合处理那些需要频繁更新和查询区间和的问题。
我是有底线的