
线段树/主席树
文章平均质量分 66
HeartFireY
可能是ACMer、JXNU计算机科学协会前会长
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
[线段树套单调栈] 2019-2020 ICPC Asia Hong Kong Regional Contest H.[Hold the Line]
你已经建造了一条由编号从到的战壕组成的防线,每条战壕最初都是空的。士兵们正在等待你的命令,每个士兵都有一个喜欢的射击高度。考虑如何检查合法性:由于在权值线段树上丢失了区间信息,因此二分时要检查合法性:我们对每个节点记录两个值:位置。注意此时查询的是最近的操作,而不再是具体的节点。,那么第一个节点就可以被后者覆盖。因此对每个节点维护一个随。分别将修改操作和询问操作离线,然后分别按照右端点排序。随着战斗的进行,以下两个事件可能会发生。那么对于任意两个节点状态,当时间戳。,然后取差值最小值即可。原创 2022-10-04 10:08:09 · 494 阅读 · 0 评论 -
The 2021 ICPC Asia Nanjing Regional Contest E.Paimon Segment Tree 区间合并线段树/维护矩阵乘法
给定长度为n的序列a1,a2,…,an,要求支持区间加操作,同时对操作记录历史版本,查询问区间[l,r]操作[s,t]中的每个数的平方之和。原创 2022-10-03 17:06:38 · 993 阅读 · 4 评论 -
CF580E - Kefa and Watch 线段树维护哈希
有了以上的性质,直接线段树维护哈希,实现区间修改、区间查询即可。本题难点在于循环节判断的思路。那么首先,需要明确判断循环节的方式:如上图所示是一个重要的结论:当区间。区间修改+区间查询,考虑用线段树维护哈希实现。的哈希值相等时,那么该。原创 2022-09-24 11:39:14 · 311 阅读 · 0 评论 -
HDU5869 Different GCD Subarray Query 离线查询/区间贡献
那么用维护区间内不同数字的数目的思路解决。原创 2022-09-23 18:44:11 · 209 阅读 · 0 评论 -
29.CF1149C [Tree Generator™](httpswww.luogu.com.cnproblemCF1149C) 区间合并线段树
给定一棵树的括号序列,要求支持单点修改、查询树直径考虑区间合并线段树,每个子树的括号序列是按照先序遍历进行的,因此考虑合并两个区间的括号序列时的情况若从序列中任取一段连续子序列,从中去掉所有匹配括号后,剩下的括号组成的路径一定为一条链,链长为剩下的子序列树上直径长度即为任意区间去掉匹配括号后的长度的最大值。最长去匹配区间 = 最大的(将区间分成两段)后面的权值和 - 前面的权值和原创 2022-09-08 09:30:35 · 456 阅读 · 0 评论 -
27.CF1004F Sonya and Bitwise OR 区间合并线段树
给定序列,要求支持操作: 1.单点修改 2.查询区间内按位或和至少为X的子区间数考虑分治。现在需要计算跨越区间中点的左、右端点对数。记录以区间中点为一端的前后缀,搭配双指针就可以 $O(n)$ 计算原创 2022-09-08 09:29:05 · 209 阅读 · 0 评论 -
26.CF1000F One Occurrence
给定序列,要求支持查询区间内只出现一次的数字可以离线,那么离线所有询问后按右端点排序,然后加入贡献回答即可原创 2022-09-08 09:28:31 · 332 阅读 · 0 评论 -
25.CF992E Nastya and King-Shamans 转化+线段树二分
给定序列,要求支持单点修改,查询序列中 a[i] = s[i - 1]a[i]=s[i−1] 的点(SPJ)线段树维护a_i - s_{i - 1}a i −s i−1 的区间最大值,然后树上二分查询即可原创 2022-09-08 09:27:32 · 214 阅读 · 0 评论 -
24.CF915E Physical Education Lessons 线段树维护区间反转
给定$0$序列要求支持区间$0-1$反转,区间求和(容斥一下). 对原题可以发现容斥一下,初始全0表示全为休息日,然后打标记支持区间反转即可。原创 2022-09-08 09:26:57 · 159 阅读 · 0 评论 -
23.CF911G Mass Change Queries 动态开点权值线段树+线段树合并
给出一个数列$a_i \in [1, 100]$,有$q$个操作,每种操作是把区间$[l,r]$中等于$x$的数改成$y$.输出$q$步操作完的数列。原创 2022-09-08 09:26:26 · 257 阅读 · 0 评论 -
22.CF877E Danil and a Part-time Job
要求支持子树0101反转,子树求和。树剖序列化一下,然后按照0-10−1序列反转板子来就可以。原创 2022-09-07 09:40:30 · 142 阅读 · 0 评论 -
21.CF840D Destiny 可持久化权值线段树+二分查询
每次给出三个参数$l,r,k$,询问区间$[l,r]$内是否存在出现次数严格大于$\frac{r-l+1}{k}$的数。如果存在就输出最小的那个$ans$,否则输出$-1$ 区间大于$k$的数,于是想到用可持久化权值线段树解决,注意额外检查左右区间。原创 2022-09-07 09:39:01 · 228 阅读 · 0 评论 -
20.CF817F MEX Queries 线段树(Lazy标记练习)
要求维护集合,初始为空,支持以下操作1.加入[l, r][l,r]在集合中未出现的数2.删除[l ,r][l,r]在集合中出现的数3.区间反转操作,加入未出现删除出现每次操作后输出集合MEX原创 2022-09-07 09:38:20 · 203 阅读 · 0 评论 -
19.CF803G Periodic RMQ Problem 线段树+分块+线段树标记
给定序B和整数K,要求对[B复制K次的序列]支持区间赋值、区间最小值操作。我们发现初始序列复制K次,于是想到初始就具有高度的重复性,可以用分块维护,但是发现普通分块难以支持区间赋值等操作。于是我们想到对每个块内分别建立一颗线段树,然后用再用一棵线段树维护各个块的信息。原创 2022-09-07 09:36:30 · 209 阅读 · 0 评论 -
18.CF786B Legacy 线段树建图+最短路
给定空图,要求支持 点-点连边、点-区间连边、区间-点连边。n次查询最短路原创 2022-09-07 09:24:03 · 197 阅读 · 0 评论 -
17.CF739C Alyona and towers 区间合并线段树
给定序列,要求支持区间加,以及查询最长先增后减子区间(单峰序列)长度非常典型的区间合并线段树,记录左右起LIS,LCS,单峰原创 2022-09-07 09:21:50 · 290 阅读 · 0 评论 -
16.CF718C Sasha and Array 线段树+矩阵快速幂
要求支持区间和操作,查询元素作为下标时的斐波那契和转换为矩阵快速幂形式,用线段树解决。原创 2022-09-07 09:14:29 · 241 阅读 · 0 评论 -
15.CF620E New Year Tree
要求支持子树染色、计算子树颜色数目,颜色60种颜色只有60种,那么将颜色状压,用二进制位表示颜色。然后用树剖+线段树维护即可。原创 2022-09-07 09:13:41 · 196 阅读 · 0 评论 -
14.CF600E Lomsat gelral 线段树合并
给定带权树,查询所有子树内出现次数最多的权值原创 2022-09-07 09:13:10 · 261 阅读 · 0 评论 -
12.CF558E A Simple Task 线段树维护字符串区间排序
要求对于给定的字符串,对给定的区间进行排序线段树经典应用,维护26棵线段树,实现区间覆盖和查询即可。原创 2022-09-07 09:12:27 · 272 阅读 · 0 评论 -
11.CF522D Closest Equals 线段树+离线询问
给定序列,查询区间内距离最近的两个相等元素。离线查询,按右端点加入贡献计算答案即可原创 2022-09-06 11:11:27 · 320 阅读 · 0 评论 -
10.CF515E Drazil and Park 简单线段树
给定一个环,i-i+1i−i+1之间的距离给定,每个点有点权h_i求这个最大值原创 2022-09-06 11:09:42 · 175 阅读 · 0 评论 -
9.CF490F Treeland Tour 线段树合并
给出一棵带点权树,求树上最长上升子序列的长度对每个点开两棵线段树,记录叶节点到当前节点的LIS和LDS,然后合并时取最大值即可原创 2022-09-06 11:07:55 · 537 阅读 · 0 评论 -
8.CF446C DZY Loves Fibonacci Numbers 线段树Lazy标记
给定序列,要求支持区间对应项加斐波那契数列,区间求和原创 2022-09-06 11:07:18 · 240 阅读 · 0 评论 -
7.CF438D The Child and Sequence 线段树维护区间取模
给定数列,区间查询和,区间取模,单点修改。记录区间最大值,对于区间最大值小于模数的区间不予更新原创 2022-09-06 11:05:40 · 218 阅读 · 0 评论 -
6.CF431E Chemistry Experiment 权值线段树+二分
给定数列,区间查询和,区间取模,单点修改。记录区间最大值,对于区间最大值小于模数的区间不予更新原创 2022-09-06 11:04:58 · 286 阅读 · 0 评论 -
4.CF383C Propagating tree 线段树+树上问题
给定树,要求支持给树的单点连续反转加值,查询指定节点的权值。原创 2022-09-06 11:04:23 · 222 阅读 · 0 评论 -
3.CF343D Water Tree 树剖+线段树区间覆盖
线段树维护树上覆盖问题,树剖序列化维护序列覆盖。原创 2022-09-06 11:03:52 · 231 阅读 · 0 评论 -
2.CF242E XOR on Segment 线段树维护区间反转
要求实现区间求和,区间异或对每个二进制位维护一棵线段树,实现区间异或可以通过对该位求补集大小实现原创 2022-09-06 11:03:04 · 303 阅读 · 0 评论 -
1.CF240F TorCoder 线段树区间覆盖(区间排序回文构造)
给定字符串,对于每次给定的区间,将区间置为最小字典序的回文串,不能操作就不操作。线段树维护区间覆盖。原创 2022-09-06 11:02:34 · 246 阅读 · 0 评论 -
30.Boring Queries 可持久化权值线段树维护区间GCD/LCM
Limitの线段树题单系列题解给定序列,要求不带修支持在线查询区间最小公倍数对1e9+7取模的结果主席树不带修在线维护区间GCD,记录质因数最后一次出现的位置并消除贡献原创 2022-09-04 20:34:57 · 413 阅读 · 0 评论 -
Limitの线段树题单 题解目录
Limitの线段树题单(洛谷)题解目录,内含个人全部题解链接。如果习惯我的线段树板子可以参考一下这些题解~不要忘记点赞哦~原创 2022-09-04 20:32:36 · 512 阅读 · 0 评论 -
P3302 森林 并查集+树上启发式合并+主席树
对于连边操作,我们使用并查集维护每一个连通块,在连边操作时对每条边连接的两个顶点做启发式合并。对于查询操作,在主席树上做树上前缀和二分区间第k大即可。注意lca要求在线重建,必须跑满log。...原创 2022-08-12 21:28:08 · 245 阅读 · 1 评论 -
2020 ICPC Asia East Continent Final G. Prof. Pang‘s sequence 线段树/扫描线
扩展完区间后,我们可以直接查询区间和,即为最终答案。为终点的区间奇偶结果序列。中满足不同数字个数为奇数的子区间个数。首先将所有询问离线,然后考虑对同一。组成的区间都不会发生奇偶性反转,而。注意进行反转操作的时候,需要交换。那么我们需要使用线段树维护。我们可以通过维护所有以。所有区间所有的右端点和。......原创 2022-07-15 20:51:43 · 498 阅读 · 0 评论 -
CF484E Sign on Fence
给定一个长度为nnn的数列,有mmm次询问,询问形如,要求在区间[l,r][l,r][l,r]内选一个长度为kkk的区间,求区间最小数的最大值。首先可以考虑二分答案,那么问题变为如何检验[l,r][l, r][l,r]是否存在长度为kkk且最小值为≥mid\geq mid≥mid的子区间。然后发现每次二分答案开销很大,考虑使用数据结构去维护。但发现区间信息不可并。这里参考洛谷dalao的妙妙题解:将大于等于midmidmid设为111,否则设为000,则问题变为查询区间内最长全111区间长度是否大于kkk。原创 2022-07-12 17:32:34 · 379 阅读 · 0 评论 -
Educational Codeforces Round 131 (Rated for Div. 2) F.Points 线段树
定义三元组(i,j,k)(i, j, k)(i,j,k)满足i原创 2022-07-11 19:17:22 · 282 阅读 · 0 评论 -
The 19th Zhejiang Provincial Collegiate Programming Contest 2022浙江省赛 F.EasyFix 主席树
The 19th Zhejiang Provincial Collegiate Programming Contest 19th 2022 浙江省赛 F.Easy Fix 主席树 可持久化权值线段树原创 2022-07-03 22:39:35 · 802 阅读 · 0 评论 -
The 2020 ICPC Asia Macau Regional Contest J.Jewel Grab 线段树+双向链表模拟
思路对于每个位置的宝石,分别维护pre[i]pre[i]pre[i](同色前一宝石所在位置)和nxt[i]nxt[i]nxt[i](同色后一宝石所在位置)。注意到kkk很小,那么对于每次询问,我们可以从开始点往后找,查询当前点是否有同色点位于前面且位于[s,n][s,n][s,n]内,有的话比较大小,决定是否跳过。对于区间单点维护操作,我们需要对preprepre和nxtnxtnxt进行更新,更新的过程类似于单链表,每个颜色单独构成一条链:删除原有元素(讨论:元素位于序列头部、尾部、中间)。添加原创 2022-03-30 21:57:16 · 1232 阅读 · 0 评论 -
Subarray Sorting 思维+前缀最小值
题目要求每次可以选择一个不减的区间进行排序,那么显然暴力翻转不可行,那么考虑对性质进行维护。我们考虑从小到达对每个数字进行归位操作。对于B[i]B[i]B[i]而言,如果其在A[]A[]A[]中的位置为pospospos,且B[i]B[i]B[i]为[1,pos][1, pos][1,pos]的最小值,那么才能够进行归位操作。因为之前匹配的元素实际上已经移动到了前面,但是我们并没有实际上对AAA序列进行修改,即所有未匹配过在[1,pos][1,pos][1,pos]这一区间的值的位置都在B[i]B[i]B原创 2022-03-19 17:15:56 · 482 阅读 · 0 评论 -
[线段树]打字练习2
1.P1908 逆序对动态开点线段树/离散化均可解决。动态开点线段树维护桶,每次插值时统计值域上[val,max_val][val, max\_val][val,max_val]的区间和,比其大的数的个数就是对总逆序对个数的贡献。#include <bits/stdc++.h>#define ll long long using namespace std;const int maxn = 5e5, maxx = 1e9 + 7;int sum[maxn << 5],原创 2022-02-20 19:42:31 · 620 阅读 · 0 评论