
线段树
blng
这个作者很懒,什么都没留下…
展开
-
【线段树】[LUOGU [POI2011] ROT-Tree Rotations] 线段树合并
题目:题目链接:[LUOGU [POI2011] ROT-Tree Rotations]题解:(这此是真的线段树合并,上次是,,失误)这个题,从权值线段树开始学,又学了动态开点,最后才学的线段树合并,,,,(我说之前我连题解都看不懂呢,,,)先说一下动态开点,我认为它就是个比较好的思想,在之前我写的线段树是中规中矩的,开满满的二叉树,还要开4倍的空间,这样的话其实是比较浪费空间的,那么就...原创 2019-08-25 06:23:06 · 208 阅读 · 0 评论 -
【线段树】ZKW线段树浅谈
(学了学一般的线段树,还学了学线段树合并还有扫描线什么的,然后就就看到有一个比较有意思的线段树,,就学了一下)这里,,警告!zkw这东西,犹如鸡肋之令,食之无味,弃之可惜,没有太大的作用,本菜鸡就是敲一下板子了解一下即可。。。。。进入正题,,,,安利博客:洛谷日报,SinGuLaRiTy,Judge 关于zkw线段树zkw线段树,就是从底到上建线段树,抛弃掉之前的由上到下不断递归的建树...原创 2019-09-03 19:12:02 · 674 阅读 · 0 评论 -
【线段树】[LUOGU 会场预约] 线段树染色
题目:题目链接:[LUOGU 会场预约]题解:(这个可以用BIT写,这个是比较短的,可是蒟蒻这个数据结构还需要加强,,,,)线段树染色,就是对于每次的区间覆盖的时候进行染色处理,再记录一下是否被删除过的数 ,这样不用再进行真实的删除操作了,懒标记为颜色的标号。安利大佬博客:传送门(好不容易写完的题,反复TLE,,,索性一个O2,,,结果就过了,,,,不知道我的常数为何如此之大,,,,)...原创 2019-09-02 18:57:30 · 163 阅读 · 0 评论 -
【线段数】[LUOGU 上帝造题的七分钟2 / 花神游历各国] 线段树/分块 区间开方
题目:题目链接:[LUOGU 上帝造题的七分钟2 / 花神游历各国] 题解:这个题其实在之前我写的数列分块中的有一道题很一样,几乎一模一样了,也是让区间开方,分块写就很好理解,然后现在用线段树写其实大体上的解是一样的但是呢,就是套路不是很一样,,,这个题重要的就是在一点,对于要好多次开方的数,你会发现,一个在1e9之内的数你对它开最多开方(下取整)六次即可开到1,或者是0,这样的话如果是开...原创 2019-09-02 16:38:18 · 158 阅读 · 0 评论 -
【线段树】[LUOGU 守墓人] [LUOGU 维护序列] 线段树模板题
题目:题目链接:守墓人题解:线段树单点修改,区间修改,单点查询,区间查询,一系列线段树基本操作,模板打就好。(回头再补一个分块和树状数组的这种板子题,就是用分块和树状数组再写一遍,,练练手用)代码:#include<bits/stdc++.h>#define LL long long#define lk (k<<1)#define rk (k<<...原创 2019-09-02 16:15:28 · 209 阅读 · 0 评论 -
【线段树】[POJ Atlantis] 线段树扫描线
题目:题目链接:[POJ Atlantis] 题解:(这个题作为学习线段树的尾巴,,,结果还是学了好长时间)先安利一下sdau_blue大佬的优秀博客,太有用了。这个题就是有许多的矩形进行随意放置在二维平面内,重叠的面积只算一次,求总面积。在这里就是离散化处理横坐标,对于纵坐标进行结构体处理一下,然后再以横坐标作为线段(区间),对横坐标线段进行扫描,扫描的作用是每次更新下底边总长度和下...原创 2019-08-29 16:27:45 · 206 阅读 · 1 评论 -
【线段树】[LUOGU [湖南集训] 谈笑风生]线段树合并
题目:题目链接:[LUOGU [湖南集训] 谈笑风生]题解:由于是要求符合条件的三元组,那么可以分成两段来写,第一段:如果b在a的上面的时候在这一段中c就可以是a的子树大小,而b的话就是min(deep[a]−1,K)min(deep[a]-1,K)min(deep[a]−1,K),这一部分的答案就是size[a]∗min(deep[a]−1,K)size[a]*min(deep[a]...原创 2019-08-29 06:23:20 · 159 阅读 · 0 评论 -
【线段树】[LUOGU [Vani有约会]雨天的尾巴] 树上差分+线段树合并
题目:题目链接:[LUOGU [Vani有约会]雨天的尾巴]题解:这个题,,,就是线段树合并的板子,加上一个树上差分操作即可。至于怎么树上差分,可以先想一下在序列中差分,因为这里是赋值的操作了,所以在序列中啊,就是在序列的首位出加一减一就可。这样的思想转化到树上对于树上的距离就是重在四个点上,xxx,yyy,lca(x,y)lca(x,y)lca(x,y),fa[lca(x,y)]fa[lc...原创 2019-08-28 21:53:57 · 147 阅读 · 0 评论 -
【线段树】[LUOGU NOIP2016 天天爱跑步] 线段树合并+树上差分
题目:题目链接:[LUOGU NOIP2016 天天爱跑步]题解:(这个题,,真的,其实学这个权值线段树的知识,就是为了写这道题的,,,但是,尽管半个小时码完了代码,但是,,,调了一下午,,,,o(╥﹏╥)o)不扯了,还是好好写题解吧:这道题其实就是个加强版的雨天的尾巴(树上差分+线段树合并),可以先做一下这道题。这个题中的链中,如果可以被观察员发现的话,需要满足两点:第一点:xxx...原创 2019-08-28 21:42:16 · 173 阅读 · 0 评论 -
【线段树】[LUOGU [USACO17JAN]Promotion Counting晋升者计数] 线段树合并
题目:题目链接:[LUOGU [USACO17JAN]Promotion Counting晋升者计数]题解:这是个线段树合并的板子题,,,可以主席树写,可以树状数组(竟然还有莫队优化+BIT的写法,,,菜鸡我竟然没想到),甚至是Splay也可以写,,但是我偏要写线段树合并,,o(´^`)o,,在前面处理一下点权,这里的点权可以用比较巧妙的一个小trick即可,然后这个线段树合并就非常的板子...原创 2019-08-26 21:36:46 · 189 阅读 · 0 评论 -
【线段树】[LUOGU [HNOI2012] 永无乡] 并查集+区间第k小 [线段树合并]
题目:题目链接:[LUOGU [HNOI2012] 永无乡]题解:代码:#include<bits/stdc++.h>using namespace std;inline int read(){ int s=0,w=1;char ch=getchar(); while(ch>'9'||ch<'0'){if(ch=='-')w=-1;ch=getchar()...原创 2019-08-26 06:18:51 · 125 阅读 · 0 评论 -
【线段树】[LUOGU USACO08FEB 酒店Hotel ] 区间连续最大
题目:题目链接:[LUOGU USACO08FEB 酒店Hotel ]题解:这个题,就是XOR的艺术和Glass Carving的结合,就是求长度为x的最小房间号的连续0,这样的话就是和Glass一样进行线段树的合并,再想XOR的艺术一样进行修改。代码:#include<bits/stdc++.h>#define lk (k<<1)#define rk (k&...原创 2019-08-22 13:37:30 · 133 阅读 · 0 评论 -
【线段树】[LUOGU Glass Carving] 区间连续最大
题目:题目链接:[LUOGU Glass Carving]题解:仔细想一下,纵着切和横着切是互不影响的。这样就是可以用线段树维护横坐标和纵坐标就行,,所以这个题的关键就是在段树合并,现在节点的最大值就是左边最大值,右边最大值,以及左边中从右边开始的0+右边中从左边开始的0的和,这样就是在up中解决一下就行了。代码:#include<bits/stdc++.h>#defin...原创 2019-08-22 12:32:32 · 190 阅读 · 0 评论 -
【线段树】[LUOGU XOR的艺术] 区间异或+区间询问
题目:题目链接:[LUOGU XOR的艺术]双倍经验:[USACO08NOV 光开关Light Switching]三倍经验:[LUOGU [TJOI2009] 开关]题解:异或操作,区间和即可。代码:#include<bits/stdc++.h>using namespace std;inline int read(){ int s=0,w=1;char ch=...原创 2019-08-22 11:01:34 · 195 阅读 · 0 评论 -
【线段树】[LUOGU 方差] 线段树+数学技巧
题目:题目链接:LUOGU 方差题解:(其实最近写线段树的题还有一部分原因是因为这个题,,,码了半个多小时,调了一两天,,,/(ㄒoㄒ)/~~,因为这个题,三个人一起改,,,还是没改出来,,,之后我还去学了Dev的单步跟踪,,,结果,,单步跟踪挂掉了,,一些玄学错误不好调了,完了,,,就只好重新码一遍,结果还好重构之后就是过了,,,不容易啊(〃>_<;〃))还是 进入正题吧,,,这个题其实...原创 2019-08-22 10:10:31 · 180 阅读 · 0 评论 -
【线段树】[P1816 忠诚] 询问区间最小
题目:题目链接:P1816 忠诚题解:(要不是被一个小可爱催着睡觉,,,一晚上就写完了,,,, ̄へ ̄)这个题,看着比较简单,用线段树写比较好写,用分块就更好写了,,但是既然是练习线段树,就用线段树写吧。代码:#include<bits/stdc++.h>#define lk (k<<1)#define rk (k<<1|1)using name...原创 2019-08-22 09:22:30 · 152 阅读 · 0 评论 -
【线段树】[POJ A Simple Problem with Integers] 区间加
A Simple Problem with Integers【http://poj.org/problem?id=3468】P1816 忠诚方差XOR的艺术(三道)Glass CarvingP2894 [USACO08FEB]酒店Hotel原创 2019-08-22 09:06:36 · 136 阅读 · 0 评论 -
【线段树】[LUOGU CF600E Lomsat gelral] 区间众数和 [线段树合并]
题目:题目链接:[LUOGU CF600E Lomsat gelral]题解:这个题就是个(动态开点)权值线段树的板子题,就是在每个点上建立一个取值线段树,记录区间众数和,不断是合并权值线段树就行,在up里面就进行对于众数的判断即可。这里再说一下权值线段树,之前说过,这就是个桶,但是桶只能查找到权值等于xxx这个值的个数,但是权值线段树可以查找到权值在xxx,yyy之间的的个数。代码:...原创 2019-08-25 18:45:34 · 1121 阅读 · 0 评论 -
【数据结构】水题集合
(好不容易从大神那里拿来的复习巩固的数据结构题目,,然后就,,,看到这些题,,,两个小时六道,,然后就大模拟赛了,,所以好几天了,这样的话,我就一不小心就断更了,,)(都是UVA的题,,,ACM制的害我一顿好调的,,)这篇博客可能有点长,总共十道题,从初级数据结构到高级数据结构的事情。题目1:题目链接:UVA11995 I Can Guess the Data Structure!题解...原创 2019-09-11 20:57:13 · 252 阅读 · 0 评论