树状数组

Ayanami_Reii4 天前
数据结构·c++·算法·线段树·树状数组·主席树·莫队
区间不同数的个数-树状数组/线段树/莫队/主席树本问题将使用如下数据结构树状数组维护当前数组出现的位置信息, 具体的来说因为 j j j指针只会走一次, 算法时间复杂度 O ( m log ⁡ n ) O(m \log n) O(mlogn)
Ayanami_Reii15 天前
数据结构·算法·线段树·树状数组·离散化·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_Reii16 天前
开发语言·数据结构·算法·线段树·差分·树状数组·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_Reii18 天前
数据结构·算法·树状数组·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_Reii18 天前
数据结构·算法·树状数组·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_Reii18 天前
数据结构·算法·前缀和·差分·树状数组·fenwick tree
进阶数据结构应用-一个简单的整数问题2(Fenwick-Tree 解法)两个操作首先, 借用一个简单的整数问题思想, 在区间加法的情况下, 可以将原数组转化为差分数组, 进行区间修改操作
xzk201210022 个月前
c++·算法·树状数组
洛谷 P1438 无聊的数列 题解题目链接:洛谷P1438 无聊的数列哈喽,大家好,我们又见面啦!今天我们来看 洛谷P1438 无聊的数列。
惆怅客1234 个月前
树状数组·icpc·uva·k-d tree
UVa12389/LA5821 Cybercrime Donut Investigation本题是2011年icpc欧洲区域赛西南欧赛区的C题查询多个目标点与参考点集中最近点的曼哈顿距离。多组数组,每组数据的第一行是整数 n (1 ≤ n ≤ 100, 000),表示参考点的数量。接下来 n 行每行两个整数表示各个参考点的坐标。接下来一行是整数 q (1 ≤ q ≤ 50, 000),表示目标点的数量。接下来 q 行每行两个整数表示各个目标点的坐标。所有点的坐标 x ,    y x,\;y x,y 都满足 1 ≤ x ,    y ≤ 1 0 9 1 ≤ x,\;y ≤ 10^9 1≤x,y≤
zhangpz_7 个月前
数据结构·算法·树状数组
【数据结构】树状数组假设一个数可以 x x x可以被二进制分解成 x = 2 i 1 + 2 i 2 + . . . + 2 i m x = 2^{i_1} + 2^{i_2} + ... + 2^{i_m} x=2i1+2i2+...+2im,不妨设 i 1 > i 2 > . . . > i m i_1 > i_2 > ... > i_m i1>i2>...>im,进一步地,区间 [ 1 , x ] [1, x] [1,x]可以分成 O ( l o g x ) O(log\ x) O(log x)个小区间:
How_doyou_do8 个月前
数据结构·算法·树状数组
树状数组底层逻辑探讨 / 模版代码-P3374-P3368目录功能实现Q:但是,c[x]左端点怎么确定呢?Q:那么为什么要以二进制为基础呢?Q:为什么是补码' - '?
Elizahone9 个月前
算法·树状数组·归并分治·离散化技巧
【经典题目】逆序对的数量 离散化技巧逆序对逆序对就是序列中 \(a_i>a_j\) 且 \(i<j\) 的有序对。 以下解法时间复杂度均为 \(O(log n)\)
码见愁9 个月前
java·算法·树状数组
蓝桥杯2024年真题java B组 【H.拼十字】原题链接:拼十字 思路:使用树状数组或线段树解决。先将输入的信息存入到一个n行3列的数组中,将信息排序,按照长度小到大,长相同时,宽度小到大 排序。 建立三个树状数组,维护三种颜色对应的信息,树状数组的索引就是数据的宽度,值就是有几个这样宽度的数据。 遍历数组每组数据: 当颜色为0时,假设该组数据为6 3 0,则要求的就是其他两个颜色中宽度比当前宽度大的(因为长度已经从小到大排过序),也就是去1,2树状数组中找宽度比当前3的宽度大的,就是下标大于3的(就是宽度大于三的),就是1,2树状数组中的4到无穷大(
PengFly1231 年前
算法·lca·树状数组·dfs序
题解:[ABC294G] Distance Queries on a Tree给定一颗有 n n n 个节点的树,带边权,要进行 Q Q Q 次操作,操作有两种:1 i w:将第 i i i 条边的边权改为 w w w。 2 u v:询问 u , v u,v u,v 两点的距离。
Abstrummerain1 年前
数据结构·c++·树状数组
「数据结构详解·十五」树状数组我们定义 lowbit ( x ) \text{lowbit}(x) lowbit(x) 为 x x x 在二进制下最低的 1 1 1 所代表的数。 如 lowbit ( 101 0 2 ) = 1 0 2 = 2 10 , lowbit ( 1110 1 2 ) = 1 2 = 1 10 \text{lowbit}(1010_2)=10_2=2_{10},\text{lowbit}(11101_2)=1_2=1_{10} lowbit(10102)=102=210,lowbit(111012)=12=1
灼华十一1 年前
数据结构·leetcode·golang·树状数组
数据结构-树状数组给定一个数组,在这个数组上经常性地需要重新区间[i, j]的数字和,很容易想到的一种思路就是前缀和,利用前缀和可以以 O ( 1 ) O(1) O(1)的时间复杂度查询出所有的区间和。但是如果需要经常性地修改数组中的某个元素,然后再进行区间和的查询,此时前缀和修改的时间复杂度就达到了 O ( n ) O(n) O(n),尽管查询的时间复杂度还是 O ( 1 ) O(1) O(1),但是这种方法在大数据量情况下运行时间是线性增加的,这显然是低效的。那么有没有什么数据结构可以使的修改查询区间和的时间复杂度都低
摆烂小白敲代码1 年前
c语言·数据结构·c++·算法·树状数组·bit·fenwick tree
详解树状数组(C/C++)树状数组(Binary Indexed Tree,简称BIT或Fenwick Tree)是一种用于高效处理数据序列的算法数据结构。它能够支持两个主要操作:单点更新和区间求和,这两个操作的时间复杂度都能达到O(log n),其中 n 是数据序列的长度。树状数组非常适合处理那些需要频繁更新和查询区间和的问题。
2302_807070711 年前
c++·二分·树状数组·萌新联赛
河南萌新联赛2024第(六)场:郑州大学(补题ABCDFGIL)比赛链接66E61d他拥有一个可以为他增加a%的暴击率,发生暴击时会使他本次普通攻击伤害变为原来的b倍
xhchen20231 年前
leetcode·前缀和·动态规划·哈希·计数·树状数组
第 402 场 LeetCode 周赛题解计数:遍历 h o u r s hours hours ,记录 h o u r s [ i ] % 24 hours[i]\%24 hours[i]%24 的出现次数
无名之逆2 年前
开发语言·算法·rust·线段树·二分·树状数组·离散化
3072. 将元素分配到两个数组中 II Rust 线段树 + 离散化给你一个下标从 1 开始、长度为 n 的整数数组 nums 。现定义函数 greaterCount ,使得 greaterCount(arr, val) 返回数组 arr 中 严格大于 val 的元素数量。
小哈里2 年前
算法·前缀和·笔试·模拟·树状数组
【笔试】美团2024年春招第二场笔试(技术)【笔试】美团2024年春招第二场笔试(技术)题目:数组求和,判断是否要减一个数 思路:模拟即可题目:思路: