北大ACM暑期培训(1)——线段树,树状数组

本文出自:http://blog.csdn.net/svitter

今天ACM暑期实训开始了,今天讲述的内容是:

7.14  数据结构(一): 线段树,树状数组,二维线段树。

线段树:invertal tree (称为区间树更加合适)

作用:快速区间查询,用于解决区间统计的有关问题。

重点:同层节点不重叠。

每层最多有两个终止节点。

更新和进行区间分解的时间复杂度均为log(n);

方法:调用会多次使用递归更新插入查询;

空间:开空间的时候,一般情况下开4n大小,2*2log[n] - 1 <= 4n;

不同的情况可能MLE,

具体的资料可以网上查询。

参考题目:POJ3264——Balanced
Lineup(线段树)

树状数组:

作用:与线段树相同,快速求出任意区间的和。但是相对于线段树,更加容易编写,速度也有优势。

单个元素修改,反复求区间。

北大ACM暑期培训(1)——线段树,树状数组,布布扣,bubuko.com

时间: 2024-12-09 11:14:40

北大ACM暑期培训(1)——线段树,树状数组的相关文章

北大ACM暑期培训课程目录(五)

本文出自:http://blog.csdn.net/svitter netFlow Ford-Fulkerson 深度优先搜索,制作一个流网络. 部分路径可能不合理. 对上次dfs的边就行重新筛选.每条边来个反向边. 再来一次dfs 发现还能找到一条路径. dfs->abtray edge->dfs stop when no new stream 容量相等. *残余网络 寻找变数最少的增广路径 通过bfs寻找增广路劲 Edmonds-Karp最短增广路算法 依然不是很好的算法. POJ1273

北大ACM暑期培训课程目录(四)

本文出自:http://blog.csdn.net/svitter Computational Geometry 计算几何 ACM中基本是最麻烦的部分. 几何代码都要自己写,STL中也没有.基本上. struct point 数乘,差乘,计算几何题目抄.一个数字由于误差积累造成大. 避免误差. 注意: a=b <=> |a-b| < e a<b <=> a-b < -e a<=b <=> a-b < e e 多10^-8 四舍六入五差 +-

线段树&amp;数状数组

线段树 单点修改,区间查询 #include<bits/stdc++.h> using namespace std; int n,q; long long num[1000010]; struct tree { int l,r; long long sum,max; }t[4000010]; void BuildTree(int,int,int); void Update(int,int,int,int,long long); long long Query(int,int,int,int,i

北大ACM暑期培训课程目录(三)

本文出自:http://blog.csdn.net/svitter 一.图的生成树 .必然含有n-1条边. .无向带权图. .如何求最小生成树. .prime | kruskal Prime: 从点里面找一个最短的边. kruskal: 从边里面找. .密集图使用邻接矩阵来存储. .稀疏图用邻接表来存储. .开一个邻接表,一个vector的一维数组. 时间复杂度(ElogV) 一般情况下邻接表更加优秀 题目:poj1258(邻接矩阵) 使用prime+堆完成.priority_queue(就是二

北大ACM暑期培训课程目录(二)

本文出自:http://blog.csdn.net/svitter 原来的一篇可能是因为字数太长,一编辑就出问题,无奈,只好暂时写一篇新的. 今天学习的内容是搜索. 一.wide search 1.poj3307 cow 深度搜索还要用栈. 广度搜速度更快. 按照层次的顺序访问节点. 走n步可以到达的点,n-1不可以到达.绝对是最优解. 可以联系图来想--周围区域扩展. re记住已经走过的点(如果转换成树呢?) 利用队列来存点. 广搜的空间大,深搜可以用一个栈来维护.(相对于广搜空间少的多) o

[ACM] Color the ball [线段树水题][数组开大]

Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的"小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色.但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气球被涂过几次颜色吗? Input 每个测试实例第一行为一个整数N,(N <= 100000).接下来的N行,每行包括2个整数a b(1 <= a <= b <= N).  当N

HDU ACM 4046 Panda 线段树或者树状数组

分析:该題可以用线段树做,也可以用树状数组做:感觉树状数组容易一些,这里就用树状数组了.这里保存字符数组的下标从1开始,树状数组初始化从3开始,因为只有大于等于3使才可能有符合要求的字串出现,最终计算L到R区间的个数时要用getsum(R)-getsum(L+1),因为可能有符合要求的str[L-1],str[L],str[l+1]也被算进去了,实际上他并不在区间L到R内.更新时要注意三种情况,POS,POS+1,POS+2处的都会受影响. #include<iostream> using n

hdu 1166 树状数组 线段树

敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 51177    Accepted Submission(s): 21427 Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务

当前插入的线段能完整覆盖存在的几条线段 树状数组 HDU 5372 Segment Game

http://acm.hdu.edu.cn/showproblem.php? pid=5372 Segment Game Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1284    Accepted Submission(s): 375 Problem Description Lillian is a clever girl so