随笔分类 -  数据结构——线段树

摘要:给出一个数组$a$,要求实现对数组进行两类操作: 第一类,给出区间$[x,y]$,对区间内的每个$a_i$加上$z$/乘$z$等 第二类,给出区间$[x,y]$,查询区间内所有元素的和/最大值/最小值等 最简单的方法,直接处理,每次处理复杂度$O(n)$,$n$次处理复杂度就是$O(n^2)$,如果 阅读全文
posted @ 2019-09-21 21:15 子谦。 阅读(447) 评论(0) 推荐(3)
摘要:"题目链接" 我一开始看错题了,看成每秒走$c_i$个单位了,于是样例答案就变成了3。。害我调好久,还以为样例错了 对于每头奶牛,我们求出它经过$y$轴的时间段,然后离散化一下,将奶牛按照从低到高的顺序排序,区间上记录最新经过的奶牛,如果当前奶牛的区间都已经被覆盖过了,那么说明完全被遮挡,反之则可以 阅读全文
posted @ 2019-03-12 10:50 子谦。 阅读(238) 评论(0) 推荐(0)
摘要:"题目链接" 简单说就是带修的查询区间最大子段和,用线段树维护即可 对于每个区间,我们肯定要记录它的最大子段和$v$,但是怎么维护呢? 我们可以记录下从区间左端点开始的最大子段和$v1$,从右端点开始的最大子段和$v2$以及区间和$sum$ 那么$t[p].sum=t[lc].sum+t[rc].s 阅读全文
posted @ 2019-03-06 15:24 子谦。 阅读(187) 评论(0) 推荐(0)
摘要:"题目链接" 这是一道假题,表面上看起来,好像使用了什么奇妙的操作,其实就是一个无脑暴力 我们会发现,即使是$1e18$,在开方$6$次之后也已经变成了$1$,而$1$再怎么开方还是$1$,也就是说,每个数最多被修改$6$次,那么我们记录区间内是否都是$1$,如果都是$1$则无需修改,然后对于需要修 阅读全文
posted @ 2019-03-06 15:00 子谦。 阅读(304) 评论(0) 推荐(0)
摘要:"题面" 这是一道非常巧妙的线段树的题 我们会发现维护$1 \sim n$的序列非常困难,但如果我们维护$01$序列的的顺序,就非常容易了 但是我们怎么能把这道题变成维护$01$序列的顺序呢? 这道题只会对一个位置的数进行询问 那么我们是不是可以二分枚举这个数是几?这样的话,大于等于这个数就是$1$ 阅读全文
posted @ 2019-02-25 15:54 子谦。 阅读(222) 评论(0) 推荐(1)
摘要:"题面" 这是一道堪称“线段树3”的线段树好题,对于$lazy$标记的操作可以说是非常巧妙 我们用结构体来记录$lazy$标记,结构体中定义$a,b$两个元素,$a$表示加上$a$,$b$表示赋值为$b$ 那么对于$\{a_1,b_1\},\{a_2,b_2\}$两个结构体合并后就是$\{a_1+a 阅读全文
posted @ 2019-02-24 07:47 子谦。 阅读(250) 评论(0) 推荐(1)
摘要:"题面" 这道题的意思就是给出若干个一次函数,当$x=x_0$时,最大的$y$为多少 这种题可以用李超线段树来处理 什么是李超线段树呢? 李超线段树存储的是在区间上方暴露最多的直线标号,为了便于描述,我们称它为优势直线 例如下图 在区间[0,5],AB就是暴露最多的线段 可以证明,当$x=x_0$时 阅读全文
posted @ 2019-02-21 11:02 子谦。 阅读(278) 评论(0) 推荐(0)
摘要:Qtree系列第三题 "我是题面" 读完题大概不难判断是一道树剖的题 这道题的关键是记录两种状态,以及黑点的序号(不是编号) 线段树啊当然 定义两个变量v,f,v表示距离根节点最近的黑点,默认 1,f则表示区间内是否含有黑点,有为1,无为0 那么,怎么才能取当前路径距离根节点最近的黑点的呢?线段树更 阅读全文
posted @ 2018-07-26 18:55 子谦。 阅读(178) 评论(0) 推荐(0)
摘要:Qtree系列都跟树有着莫大的联系,这道题当然也不例外 "我是题面" 读完题,我们大概就知道了,这道题非常简单,可以说是模板题。树剖+线段树轻松解决 直接看代码吧 cpp include include include include include define ll long long defi 阅读全文
posted @ 2018-07-26 17:16 子谦。 阅读(227) 评论(0) 推荐(0)
摘要:还是老习惯,先放题面 题目背景 滚粗了的HansBug在收拾旧数学书,然而他发现了什么奇妙的东西。 题目描述 蒟蒻HansBug在一本数学书里面发现了一个神奇的数列,包含N个实数。他想算算这个数列的平均数和方差。 输入输出格式 输入格式: 第一行包含两个正整数N、M,分别表示数列中实数的个数和操作的 阅读全文
posted @ 2018-06-05 08:05 子谦。 阅读(235) 评论(0) 推荐(0)
摘要:又一道非常简单的线段树入门题 先看题 题目描述 现在请求你维护一个数列,要求提供以下两种操作: 1、 查询操作。 语法: 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。 限制: LL 不超过当前数列的长度。 (L \ge 0)(L≥0) 2、 插入操作。 语法: 功能:将 nn 加上 阅读全文
posted @ 2018-06-04 21:52 子谦。 阅读(210) 评论(0) 推荐(0)
摘要:刚刚学了,线段树,一道线段树入门题试试水 下面是题面 题目描述 AKN觉得第一题太水了,不屑于写第一题,所以他又玩起了新的游戏。在游戏中,他发现,这个游戏的伤害计算有一个规律,规律如下 1、 拥有一个伤害串为长度为n的01串。 2、 给定一个范围[l,r],伤害为伤害串的这个范围内中1的个数 3、 阅读全文
posted @ 2018-05-30 20:45 子谦。 阅读(180) 评论(0) 推荐(0)

Live2D
//雪