线段树
Link_Ray
这个作者很懒,什么都没留下…
展开
-
POJ3468A Simple Problem with Integers(线段树)
最近在学线段树,感觉光做题收获并不是很大,还是要静下来归纳总结写写博客缕清思路。这是一道线段树区间修改,区间求和的裸题的裸题,参照挑战程序设计书上的方法,维护了一个datb[]数组和一个data[]数据,用来记录整个区间增加的值,从而就没必要把add分配给其孩子结点,节省了一大笔开销。data 和 datb的主要区别在于修改的区间:[a,b] 是否完全包含当前区间[l,r]。若[l,r]原创 2018-02-05 22:00:26 · 207 阅读 · 0 评论 -
【线段树】区间gcd
题意初始有n个数。有两个操作L R x 查询[L,R]的gcd是不是x,在查询过程中可以任意篡改一个数(不是真正的修改)pos x 将pos位置的值修改为x题解因为每次可以修改一个数,所以就不能只维护每个区间的gcd,还应该维护该区间不是x倍数的数的个数,如果 >= 2就失败。这里有个优化就是对于 gcd == x的区别就没必要再查询下去了,因为不存在不是x倍数的区间。代...原创 2019-04-14 10:24:43 · 953 阅读 · 0 评论 -
WHU网络赛store 线段树+二分
题意一共有n件商品,编号为1~n,有两种操作。M X Y:在第X天会卖出编号为Y的商品。D X Y:询问[1,X]中卖出的商品编号>=Y中编号最小的一个是哪个,没有的话输出-1。对于每个询问D,输出相应的答案。数据范围1<=n<=2e5,1 <=x<=1e9。题解对商品建立一颗线段树,线段树的结点维护的是当前区间里最找卖出的时间。对于一个查询,我们...原创 2019-04-08 16:37:23 · 841 阅读 · 1 评论 -
奇怪的报数问题(线段树,类似于划分树)
题解有点类似于划分树的过程,线段树维护的是区间[l,r]中的总人数,这里倒过来做,从最后一个开始确定,如果当前人数u <= sum[lson],那就去左儿子的区间里找,否则u-sum[lson]到右儿子的区间里找,最后找到叶子结点就是答案。同时把这个叶子结点权值减1。代码#include <bits/stdc++.h>using namespace std;#defi...原创 2019-04-01 15:46:50 · 148 阅读 · 0 评论 -
P2161 会场预约(区间染色)
https://www.luogu.org/problemnew/show/P2161题解这题可以转换成区间染色的问题,即对一段区间进行染色,问最后纯色的区间一共有多少个(不超过一种颜色的区间)。对每一段区间维护一个color和tag,color>0代表该区间染了一种颜色,color=-1代表区间杂色,color=0代表区间无色。tag就是一个懒惰标记。这里有两个操作:查询当前...原创 2019-03-15 18:37:28 · 261 阅读 · 0 评论 -
P2023 维护序列(线段树标记,乘法和加法标记)
https://www.luogu.org/problemnew/show/P2023题解乘法的标记和加法的标记相同,主要差别是在标记下传的时候,一定要先对之前的标记进行操作,即把当前的数乘以乘法标记再加上加法标记,这步必须同时进行,因为如果分开的话,若是加上加法标记再做乘法的话答案就会出错。代码#include <bits/stdc++.h>using namespace ...原创 2019-03-15 18:25:12 · 305 阅读 · 0 评论 -
uva11992 Fast Martix Operations 线段树区间set+区间add
题意有一个r行c列的全0矩阵,支持以下3种操作,如表所示。操作备注1 x1 y1 x2 y2 v子矩阵(x1,y1,2,y2)的所有元素增加v(v>0)2 x1 y1 x2 y2 v子矩阵(x1,y1,x2,y2)的所有元素设为v(v>0)3 x1 y1 x2 y2查询子矩阵(x1,y1,x2,y2)的元素和、最小值和最大值子矩阵(x1,...原创 2019-01-15 21:22:35 · 127 阅读 · 0 评论 -
线段树矩形面积并,面积交,周长并
矩形面积交#include &lt;bits/stdc++.h&gt;using namespace std;const int maxn = 2000+10;#define lson l, mid, rt&lt;&lt;1#define rson mid+1, r, rt&lt;&lt;1|1struct Rec{ double x1, x2, h; int d;原创 2018-11-22 09:30:41 · 212 阅读 · 0 评论 -
POJ2104平方分割(线段树)
题目链接: http://poj.org/problem?id=2104题意: 给出一个区间[l,r]和一个k,要查询 a(l),a(l+1), … a(r)中,按升序排列下第k个数。 例如数列:1 5 2 6 3 7 4 要查询[2, 5]中第 3个数, 即 5 2 6 3 按升序排列 2 3 5 6的第 3个, 即为5。很朴素的想法就是每次查询的时候都把要查询的区间排个序,然后取出...原创 2018-02-07 23:49:30 · 330 阅读 · 0 评论 -
【2018 ccpc-final Gym 102055】B.Balance of the Force(枚举最大值)
https://codeforces.com/gym/102055/problem/B题意宇宙中有两个阵营,分别为光明和黑暗,现在有n个骑士,每个骑士都能选择加入黑暗或者光明的阵营,加入后的能力值分别为D和L,已知有m对骑士不愿意在同一个阵营,请问如何分配,能使得能力最高的骑士和能力最低的骑士之间的能力差值最小?题解此题关键点便是枚举最大值,找到最大的最小值,更新答案。首先对骑士进行二分...原创 2019-05-05 20:29:09 · 908 阅读 · 0 评论