![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树部分总结
文章平均质量分 81
JoyGatsby
这个作者很懒,什么都没留下…
展开
-
poj 2886(线段树单点更新)
poj 2886 题意: 有N个人,顺时针围成一个圈,现指定第K个人先跳出,然后报一个数A,A>0,表示从跳出的人(跳出的人不算)左边第一个人开始的第A个人跳出,A 解题思路: 首先我们可以算出当前如果有N个人它的反素数( 注意: 反素数可以利用dfs求原创 2014-07-20 14:08:39 · 417 阅读 · 0 评论 -
poj 2155 (二维线段树的成段更新)
题意: 原矩形所有的元素都为0,改变一个子矩形 ,使该矩形上的0变1,1变0,询问某一点为多少。 解题思路: 利用二维线段树域值C来记录某个该矩形经过几次操作,然后在询问时算操作的总数即可,奇数为1,偶数相反。 注意: 无原创 2014-07-20 16:07:38 · 439 阅读 · 0 评论 -
hdu 1542(扫描线+线段树区间更新)
题意: 求矩形面积的并 解题思路: 先将x坐标离散化,扫描线从底向上扫描。所以通过步骤,我们只记录平行与x走的线段,定义结构体 struct segment{ int l,r,h;// l表示该选段的左坐标,r表示该线段的有坐标,h表示改线 段的高度 bool flag;//表示该线段是所在矩形的上边还是下边 }; 所以我原创 2014-07-20 15:53:44 · 432 阅读 · 0 评论 -
poj 3667(区间合并)
题意: 有N个房间 有两种操作: 1 表示当前有Di个人要入住,且房间号必须连续,并输出最左边满足要求的,没有满足要求的输出0 2 表示从Xi房间开始总共Di个房间要退房。 解题思路: 在线段树的结构体里增加几个域值: lsum : 表示从该结点的左端点开始的连续的个数。 rum : 同上相反 sum : 表示该结点最大连续值原创 2014-07-20 15:08:05 · 418 阅读 · 0 评论 -
hdu 1394 线段树单点更新
hdu 1 题意: 有一个序列,a1,a2,.......,an,现在要使该序列经如下变换: a1, a2, ..., an-1, an (where m = 0 - the initial seqence) a2, a3, ..., an, a1 (where m = 1) a3, a4, ..., an, a1, a2 (where m = 2)原创 2014-07-20 13:52:16 · 409 阅读 · 0 评论 -
hdu 4819 二维线段树点更新
题意: 算一个子矩形内的最大和最小的平均值,并将该平均值更新到该子矩形的中心(该矩形的边为奇数) 解题思路: 利用二维线段树的点更新和query即可 注意: 二维线段树的在点更新时,需先更新局部的子区间,然后更新全局区间原创 2014-07-20 16:04:07 · 446 阅读 · 0 评论 -
hdu 3308(区间和并)
题意: 求最长上升子序列的最大长度。 两种操作: Q: 某一段区间的最长上升子序列的最大长度为多少 U: 某一点 = val 解题思路: 如果单单求最长上升子序列,我们可以通过dp,或者分治的思想来求。因为此处操作多,所以上述方法不可行。 我们在线段树的结点里增加几个域: lsum : 表示从当前结点的最左端开始的上升子序列的长度 rsu原创 2014-07-20 15:33:22 · 484 阅读 · 0 评论 -
uestc Another LCIS(区间更新,区间合并)
题意: 求最长上升子序列的最大长度。 两种操作: q: 某一段区间的最长上升子序列的最大长度为多少 a: 某一段区间都加上val 解题思路: 如果单单求最长上升子序列,我们可以通过dp,或者分治的思想来求。因为此处操作多,所以上述方法不可行。 我们在线段树的结点里增加几个域: lsum : 表示从当前结点的最左端开始的上升子序列的长度 rsu原创 2014-07-20 14:46:32 · 396 阅读 · 0 评论 -
hdu 1823 二维线段树点更新
题意: 中文题 解题思路: 利用二维线段树的点更新即可 注意: 二维线段树的在点更新时,需先更新局部的子区间,然后更新全局区间原创 2014-07-20 15:56:38 · 429 阅读 · 0 评论 -
poj 2528(线段树区间更新)
题意: 有n条线段按照顺序进行覆盖,问最后可见的线段有多少。 解题思路: 我们可以对每条线段编号,然后在线段树内定义一个变量c,且c>0时表示当前该结点被第c种线段覆盖,且c==-1表示当前结点被多种线段覆盖,所以在统计时只要判断当前结点的c是否为-1,如果是继续向下访问,如果不是则直接统计。 注意: 这里要判断种类有多少,所以要去原创 2014-07-20 14:24:39 · 389 阅读 · 0 评论 -
hdu 4893(线段树 成段更新+区间合并)
题意: 给你大小为n的序列,该序列的初始值为0,有3种操作 1.序列的第K个位置增加d 2.询问一段区间的和 3.将一段区间中得每一个数值都改为一个最小的fibonacci数, 且该fibonacci数与区间内对应的值距离最近。 解题思路: 可以用线段树来解决该问题,且线段树中得域: lazy标记:表示当前某区间更新的标记 sum:原创 2014-07-30 23:17:12 · 393 阅读 · 0 评论