线段树
文章平均质量分 58
是羊驼鸭
这个作者很懒,什么都没留下…
展开
-
CodeForces 1661D Progressions Covering(思维,线段树)
题目链接:点击这里题目大意:给定一个长度为 nnn 的序列 aia_iai ,你可以执行一个操作:选定一个区间 [l,r](长度小于等于k)[l,r](长度小于等于 k)[l,r](长度小于等于k) ,然后让 a[l]−=1,a[l+1]−=2,...,a[r]−=(r−l+1)a[l]-=1,a[l+1]-=2,...,a[r]-=(r-l+1)a[l]−=1,a[l+1]−=2,...,a[r]−=(r−l+1) ,即区间减去一个首项为 111 公差为 111 的等差数列求最小操作次数使得所有原创 2022-04-10 19:50:16 · 570 阅读 · 2 评论 -
P1438 无聊的数列(线段树维护等差数列)
题目链接:点击这里题目大意:给定一个长度为 nnn 的序列 aia_iai ,有两种操作:1 l r K D1\ l\ r\ K\ D1 l r K D:给出一个长度等于 r−l+1r-l+1r−l+1 的等差数列,首项为 KKK,公差为 DDD,并将它对应加到 [l,r][l,r][l,r] 范围中的每一个数上。2pos2 pos2pos 询问 aposa_{pos}apos 的值题目分析:不难发现等差数列相邻原创 2022-04-10 19:40:10 · 360 阅读 · 0 评论 -
P3402 可持久化并查集
题目链接:点击这里题目大意:给定 nnn 个集合,第 iii 个集合内初始状态下只有一个数,为 iii。有 mmm 次操作。操作分为 333 种:1 a b1\ a\ b1 a b 合并 a,ba,ba,b 所在集合;2 k2\ k2 k 回到第 kkk 次操作(执行三种操作中的任意一种都记为一次操作)之后的状态;3 a b3\ a\ b3 a b 询问 a,ba,ba,b 是否属于同一集合,如果原创 2022-02-14 20:30:23 · 256 阅读 · 0 评论 -
2022牛客寒假第一场 炸鸡块君与FIFA22 (线段树)
题目链接:点击这里题目大意:给定一个长度为 nnn 的字符串,mmm 次询问,每次询问 [l,r][l,r][l,r] 区间以起始 sss 分的最终得分得分规则为遇到 WWW 加一分,遇到 DDD 分数不变,遇到 LLL 若此时分数不是 333 的倍数则减一分题目分析:我们可以用线段树维护区间 [l,r][l,r][l,r] 以 xmod 3x\mod 3xmod3 分为起始的得分对于 pushup\text{pushup}pushup 来说根节点的值可以用左区间的值-对 333 的余数,再用原创 2022-01-24 22:13:45 · 450 阅读 · 0 评论 -
SP1716 GSS3 - Can you answer these queries III(线段树)
题目链接:点击这里题目大意:给定一个长度为 nnn 的序列,进行 mmm 个操作,操作有两种:单点修改求 [l,r][l,r][l,r] 的最大子段和题目分析:考虑如何合并 [l,mid].[mid+1,r][l,mid].[mid+1,r][l,mid].[mid+1,r] 这两个区间的最大子段和:如果最大子段和不经过区间中点那么直接返回两个子区间的最大子段和的最大值即可如果经过中点,我们需要同时维护包含左右端点的最大子段和 pre,sufpre,sufpre,suf ,和区间元素和原创 2021-10-02 20:55:28 · 125 阅读 · 0 评论 -
CodeForces - 920F SUM and REPLAC(线段树)
题目链接:点击这里题目大意:给定一个长度为 nnn 的序列,进行 mmm 个操作,操作有两种:将 [l,r][l,r][l,r] 的每一个元素变成其因子个数求 [l,r][l,r][l,r] 的元素和题目分析:此题难点是操作 111我们发现 d(x)≤xd(x)\le xd(x)≤x ,而且很多都是远小于,所以可以大胆猜测修改到相等,即 x=1,2x=1,2x=1,2 所用的次数不会很多然后提前线筛求出 d(x)d(x)d(x) ,然后用线段树暴力修改即可,同时维护区间最大值,如果最大值原创 2021-10-02 20:55:18 · 129 阅读 · 0 评论 -
P6242 【模板】线段树 3(吉司机线段树)
题目链接:点击这里题目大意:线段树维护区间最值操作与区间历史最值题目分析:为了高效实现 222 操作,我们要同时维护区间最大值 maxamaxamaxa,最大值的数目 cntcntcnt 和区间次大值 sesese当要对区间取 min(ai,x)\min(a_i,x)min(ai,x) 时:若 maxa≤xmaxa\le xmaxa≤x 则无需操作若 se≤x≤maxase\le x\le maxase≤x≤maxa 打上修改标记 returnreturnreturn 即可若 x≤se原创 2021-09-23 10:28:09 · 195 阅读 · 0 评论 -
2021牛客寒假第六场 动态最小生成树(线段树)
题目链接:点击这里题目大意:有一张 nnn 个点, mmm 条边的图,每条边连接点 ui,viu_i,v_iui,vi ,边权为 wiw_iwi ,现要进行 qqq 次如下两种操作种的一种:修改第 xxx 条边为连接点 y,zy,zy,z ,边权为 ttt;查询只用 [l,r][l,r][l,r] 范围内的边,得到的最小生成树的权值为多少,如果无解输出 ImpossibileImpossibileImpossibile ,有解输出最小生成树权值和题目分析:观察此题的数据范围 n≤200原创 2021-02-27 16:55:32 · 192 阅读 · 0 评论 -
hdu 6483 A Sequence Game(线段树+莫队)
题目链接:点击这里题目大意:ttt 组样例,每组样例给出一个长度为 nnn 的序列 a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an ,mmm 组询问,每组询问给出一对 l,rl,rl,r ,求区间 [l,r][l,r][l,r] 内的数字是否连续题目分析:区间是否连续可以转化为:区间最值之差是否小于等于区间的元素个数区间最值是典型的 RMQRMQRMQ 问题,我用了线段树维护 不用 STSTST 表是因为太久没写了忘记怎么写了区间元素个数就可以用普通莫队来维原创 2021-01-29 21:58:46 · 96 阅读 · 1 评论 -
P5490 【模板】扫描线(扫描线求面积)
题目链接:点击这里题目大意:给出 nnn 个矩形的对角坐标求矩形面积的交集题目分析:原创 2021-01-25 17:21:30 · 186 阅读 · 0 评论 -
CodeForces - 1473D Program (线段树)
题目链接:点击这里题目大意:给出一个长度为 nnn ,只包含 +++ 和 −-− 的字符串,+++ 表示 +1+1+1 ,−-− 表示 −1-1−1,xxx 初始为 000 ,有 qqq 次询问,每次询问给出一对 l,rl,rl,r 求忽略 [l,r][l,r][l,r] 这一段的符号,执行剩下的符号过程中出现多少个不同的数题目分析:因为每次操作只会使 xxx 加 111 或 −1-1−1 ,所以 xxx 的变化是连续的,我们只需要知道操作过程中的最大值和最小值就可以知道操作过程中出现了多少种不同的原创 2021-01-22 13:43:53 · 203 阅读 · 0 评论 -
CodeForces -438D The Child and Sequence (线段树区间取余)
题目链接:点击这里题目大意:给定一个长度为 nnn 的序列 a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an ,对序列进行单点修改、区间取余和区间查询题目分析:有一个很经典的结论:amod p<a2(a>p)a \mod p<\frac a2(a>p)amodp<2a(a>p)证明:若 p≤a2p\le \frac a2p≤2a ,amod p<a2a \mod p< \frac a2amodp<原创 2020-12-29 00:23:56 · 191 阅读 · 0 评论 -
P4145 上帝造题的七分钟2 / 花神游历各国 (线段树区间开方)
题目链接:点击这里题目大意:给定一个长度为 nnn 的序列 a1,a2,...,ana_1,a_2,...,a_na1,a2,...,an ,对序列进行区间开方和区间查询题目分析:因为 1≤ai≤1e121 \le a_i \le 1e121≤ai≤1e12 而 1e121e121e12 连续开方 666 次就会变成 111 ,所以修改次数实际上是很少的然后我们用线段树维护区间和和区间最值,如果区间最值为 111 就不开方了否则就对每一个权值不为 111 的点进行开方具体细节见代码:#i原创 2020-12-28 23:44:23 · 240 阅读 · 2 评论 -
poj2528 Mayor‘s posters(线段树+离散化)
题目链接:点击这里题目大意:多组输入,每组给出 nnn 个区间,依次向一面墙上染不同的色,问染色后墙上能看见几种颜色题目分析:经典线段树染色问题,因为值域有点大,可以先离散化一下,然后加一个标记来判断是否被染色,最后用一个 setsetset 统计有多少种颜色即可,记得不要加入 000具体细节见代码:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#原创 2020-11-10 20:29:04 · 82 阅读 · 0 评论 -
2020ccpc 威海 Caesar Cipher (线段树维护哈希)
题目大意:对一个长度为 nnn 的序列进行两种操作:1.将每个区间[l,r]内的数 : ai=(ai+1) mod 65536(l≤i≤r)a_i = (a_i +1 )\ mod\ 65536(l \le i \le r)ai=(ai+1) mod 65536(l≤i≤r)2:询问 [x,x+l−1][x,x+l-1][x,x+l−1] 与 [y,y+l−1][y,y+l-1][y,y+l−1] 是否完全相同题目分析:对于操作一我们可以通过线段树的.原创 2020-10-30 23:04:47 · 183 阅读 · 0 评论 -
P5459 [BJOI2016]回转寿司 (动态开点的权值线段树)
题目链接:点击这里题目大意:给定一个长度为 nnn 的序列 ,现在要从中选出一段连续子序列 [l,r][l,r][l,r] ,使得 L≤∑i=lrai≤RL \le \sum^r_{i = l}a_i \le RL≤∑i=lrai≤R ,求符合条件的子序列数量题目分析:我们可以在 1−n1-n1−n 范围内对 rrr 进行枚举, lognlognlogn 的复杂度求解此时符合条件的 lll 的数目,求和即可记 sumx=∑i=1xaisum_x=\sum^x_{i=1}a_isumx=∑i=原创 2020-10-29 18:32:57 · 109 阅读 · 0 评论