![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树初级
mata蜀黍
这个作者很懒,什么都没留下…
展开
-
hdu 1166 敌兵布阵
题目连接:点击打开链接第一道接触线段树的题目,给定一个大小为n的工兵营地(区间),给定区间每个营地(点)的起始人数,有四种命令。如下1、在第i个营地增加j个人2、在第i个营地减少j个人3、询问(i,j)这个区间中的总人数4、end表示结束用线段树做,维护一个总和即可。代码:#include<cstdio>#include<iostream>using namespace...原创 2018-04-27 14:25:50 · 87 阅读 · 0 评论 -
poj2528 Mayor's posters 线段树区间更新+离散化
题目链接:poj 2528题目大意:n表示给定的海报数目,接下来的n行表示海报的左端 Li 和右端 Ri,注意到他们是按照顺序贴的,即后面贴的海报会覆盖前面贴的海报,所以我们会想到线段树的区间更新。具体就是给每张海报赋予一个ip(用他们输入的顺序即可)作为他们的颜色,然后去染色那个给定区间。还有一个很关键的问题在于海报的贴的范围最大是10000000,数组保存不了,但是海报数n只有2000,所以想...原创 2018-04-27 14:52:27 · 180 阅读 · 0 评论 -
hdu 1698 just a hook(线段树区间更新)
题目连接:hdu 1698区间更新, 线段树维护两个关键值, 一个是col表示颜色,即题目那三种,另一个关键是保存区间和sum,col用延迟标记,即当需要访问到儿子结点的时候才把col传递下去,并且更新儿子结点的sum值代码:#include<cstdio>#define MAXN 100010struct node{ int left, right, sum, col;}t...原创 2018-04-27 15:04:14 · 187 阅读 · 0 评论 -
hdu 1540 Tunnel Warfare(线段树 + 区间合并)
题目链接:hdu 1540题目大意:D x 表示x位置被炸毁, R表示修复最近被炸毁的点,Q x 表示查询包括x点在内连续最大的区间并且满足这段中都是没有被炸毁。代码:#include<cstdio>#include<algorithm>using namespace std;#define maxn 50000+10#define lson left, mid, ...原创 2018-05-21 20:46:46 · 194 阅读 · 0 评论 -
hdu 4614 Vases and Flowers (线段树 + 区间求和)
题目链接:hdu 4614思路:给你一段区间,区间每个点代表每个瓶子,两种状态,有话和无花,题目有两种询问,第一是询问你给你一个起点A和花的数,问你将从点A开始连续地插花直到没有空瓶或者已将插了B只(这里地连续并不是区间连续,而是相对于空瓶子来说地)。让你返回两个数,第一是你插花地第一个位置,第二个是你插花地最后一个位置。第二个查询是,给你A,B,让你先清空这段区间地花,并返回一个num表示你清空...原创 2018-05-27 14:47:16 · 148 阅读 · 0 评论 -
hdu3974 Assign the task (线段树 + 树形结构转为线性结构)
题目链接:hdu 3974大意:给你一棵树,当你在某个结点修改地时候,那么以这个结点为根地子树地所有结点都会做一样的修改,我们可以把这个树转化为区间问题,按照dfs的方式去遍历这棵树,然后入栈的序列即这些结点转化为区间时在区间中的序号,因此每个结点所代表的子树相当于一段区间,我们要记录每个结点所对应的区间起点和区间终点。看代码即可理解!代码:#include<cstdio>#incl...原创 2018-05-27 14:58:10 · 331 阅读 · 0 评论 -
hdu 4578 Transformation (线段树 + 延迟标记)
题目链接:hdu 4578思路:代码:#include<cstdio>#define ll long long const int mod = 10007;const int maxn = 1e5+5;#define mid (L + R)/2#define ls rt*2#define rs rt*2+1#define lson ls,L,mid#define rso...原创 2018-05-23 12:19:20 · 246 阅读 · 0 评论