![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
紫芝
你可不可以成为我的main函数,做我此生有且仅有一个入口;我愿为自己加上private,在你的class中只有你能调用。
展开
-
树状数组
1.平常我们会遇到一些对数组进行维护查询的操作,比较常见的如,①修改某点的值②求某个区间的和2.当数据规模不大的时候,①对于修改某点的值是非常容易的,时间复杂度为 O(1)②求一个区间和就要从start循环到end,时间复杂度为 O(n)③如果实时的对数组进行 M次修改或求和,最坏的情况下时间复杂度为 O(M*N),当规模增大后,必定超时3.树状数组的时间复杂度为 O(M*logN) 4. A数...原创 2018-04-07 22:15:58 · 315 阅读 · 0 评论 -
ZOJ 1610 Count the Colors【线段树】【暴力】
Painting some colored segments on a line, some previously painted segments may be covered by some the subsequent ones.Your task is counting the segments of different colors you can see at last.Inp...原创 2018-11-03 23:09:06 · 291 阅读 · 0 评论 -
HDU1698 Just a Hook 区间更新,查询区间【线段树】
Just a HookTime Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 15129 Accepted Submission(s): 7506Problem DescriptionIn the game of DotA, P...原创 2018-11-03 15:48:48 · 320 阅读 · 0 评论 -
LintCode 249 统计前面比自己小的数的个数【线段树】
249. Count of Smaller Number before itself DescriptionGive you an integer array (index from 0 to n-1, where n is the size of this array, data value from 0 to 10000) . For each element Ai in the ar...原创 2018-10-22 14:55:47 · 1137 阅读 · 0 评论 -
POJ1151 HDU1542 求矩形面积并 线段树离散化+扫描线
AtlantisTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 18498 Accepted Submission(s): 7503Problem DescriptionThere are several ancient...原创 2018-08-21 17:59:12 · 290 阅读 · 0 评论 -
poj3468 A Simple Problem with Integers 线段树入门 区间更新 查询区间
A Simple Problem with IntegersTime Limit: 5000MS Memory Limit: 131072K Total Submissions: 140749 Accepted: 43645 Case Time Limit: 2000MS DescriptionYou have N integers, A1, A...原创 2018-08-20 23:38:03 · 231 阅读 · 0 评论 -
HDU1166 敌兵布阵 单点更新 区间查询
敌兵布阵Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 123221 Accepted Submission(s): 51619Problem DescriptionC国的死对头A国这段时间正在进行军事演习,所以C国间谍...原创 2018-08-20 23:15:05 · 187 阅读 · 0 评论 -
树链剖分
树链剖分实质上就是将一棵树分割成多条链,然后再利用数据 结构维护这些链(线段树,树状数组等)。一些名词:重结点:子树结点数目最多的结点;轻结点:父亲节点中除了重结点以外的结点;重边:父亲结点和重结点连成的边;轻边:父亲节点和轻节点连成的边;重链:由多条重边连接而成的路径;轻链:由多条轻边连接而成的路径;粗线相连的为重结点。其余都 是轻结点;每段粗线都是重边,...原创 2018-08-22 23:20:33 · 218 阅读 · 0 评论 -
洛谷P3919可持久化线段树
P3919 【模板】可持久化数组(可持久化线段树/平衡树)题目提供者HansBug 站长团 评测方式云端评测 标签O2优化高性能 难度提高+/省选- 时空限制3000ms / 512MB有了可持久化数组,便可以实现很多衍生的可持久化功能(例如:可持久化并查集)题目描述如题,你需要维护这样的一个长度为 N 的数组,支持如下几种操作 在某个历史版本上修改某一个位置上的值 ...原创 2018-08-22 22:35:31 · 351 阅读 · 0 评论 -
HDU5726 线段树求解区间GCD
GCDTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 5302 Accepted Submission(s): 1908Problem DescriptionGive you a sequence of N(N≤100...原创 2018-08-14 22:06:51 · 1874 阅读 · 0 评论 -
poj 3264 Balanced Lineup RMQ问题 线段树
For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farmer John decides to organize a game of Ultimate Frisbee with some of the cows. To keep things ...原创 2018-04-29 20:27:39 · 222 阅读 · 0 评论 -
HDU 1556 前缀和 &树状数组 &线段树
解法一:a[i]表示以 i作为起点,对 i-n的气球全部上色的次数 对(start,end)区间上色++a[start]--a[end+1]抵消掉 end+1-n的部分问题转换为求 a的前缀和 #include<bits/stdc++.h>using namespace std;const int maxn=1e5+6;int n,a[maxn];int main(){ ...原创 2018-04-07 21:53:42 · 251 阅读 · 0 评论 -
线段树之延时标记(区间修改)及lazy思想
暴力求解1.最简单的方法是:在主函数中添加一个循环 进行 r-l+1次单点修改实现区间修改,对于单个元素修改时间复杂度为 O(log2(n))所以对于单个区间修改的时间复杂度为 O(n*log(n)),甚至比朴素的模拟算法还慢for(int p=l;p<=r;++p)UpdateTree(p,value); 2.延时标记 lazy tag延时标记就是在递归的过程中,如...原创 2018-04-12 23:25:23 · 1339 阅读 · 0 评论 -
NYOJ【士兵杀敌(二)】
士兵杀敌(二)时间限制:1000 ms | 内存限制:65535 KB难度:5描述南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的。小工是南将军手下的军师,南将军经常想知道第m号到第n号士兵的总杀敌数,请你帮助小工来回答南将军吧。南将军的某次询问之后士兵i可能又杀敌q人,之后南将军再询问的时候,需要考虑到新增的杀敌数。输入只有一组测试数据第一行是两个整数N,M,其中N表示士兵的...原创 2018-04-10 15:26:04 · 185 阅读 · 0 评论 -
HDU 1754 线段树模板 更新点-查询区间
线段树三类问题:①更新点,查询区间②更新区间,查询点③更新区间,查询区间1.线段树是一种二叉搜索树,与区间树相似,它将一个区间划分为一些单元区间,每个单元区间对应线段树的一个叶子节点线段树区间查询:询问某段区间某些性质,如极值、求和2.对于线段树中每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2]右儿子表示的区间为[(a+b)/2+1,b...原创 2018-04-09 21:12:00 · 299 阅读 · 0 评论 -
POJ2823 Sliding Window【单调队列】【线段树】【ST表】
Sliding Window POJ - 2823 题意:给出一个长度为N的序列,通过一个窗口,可以看到序列中连续的K个元素,窗口从最左边出发,每次移动一个单位,对于每次移动,输出当前窗口中的最大值和最小值单调递减队列:从队头到队尾单调递减的队列入队操作,先把队尾元素中小于X的元素删去,将X插入队尾 出队操作:队首元素出队例如,A={9,8,3,5,10,6,5},构造一个...原创 2018-11-11 16:02:01 · 720 阅读 · 0 评论