随笔分类 - 数据结构-线段树
摘要:UOJ621 【JOISC2021】最差记者 4 线段树合并 从早上研究到晚上,终于干掉了这道题。 对于题目中rating关系建图。 首先,每个点的出度为$1$,因此整张图是由多个基环内向树组成的,我们需要对于每个基环内向树计算答案,相加即可。 容易发现,在一棵基环内向树上,环上点的权值必然相等。
阅读全文
摘要:UOJ618 【JOISC2021】聚会 2 有根树点分治 先分析一下题目,对于一次会议来说,我们把会议的出席者权值定义为$1$,那么满足条件的岛一定是树的带权重心。 经过分析(手模)可以发现,如果总权值$V$为奇数,那么答案为$1$。如果权值$V$为偶数,可能会出现一条全$0$链,链的两端子树权值
阅读全文
摘要:UOJ612 【JOISC2021】饮食区 重工业做法,常数巨大,随手$rank$倒数第一。 吉老师线段树、平衡树 显然没法直接维护,参考【ZJOI2016】大森林的做法,把询问离线下来,在区间的左端点插入,右端点后一个位置删除。 这样维护序列只需要一棵平衡树,但是对于一组询问,我们需要准确定位它的
阅读全文
摘要:UOJ507 【JOISC2020】星座3 线段树,\(dp\) 本题中的图具有极强的性质。 我们从一颗星星的控制范围入手来解决问题,容易发现,一颗星星向下的控制范围是许多矩形的叠合,而向上的控制范围是一个直到最顶上的一个矩形。 因此我们考虑线段树优化$dp$,使用扫描线从下往上扫,每次可以插入一条
阅读全文
摘要:UOJ510 【JOISC2020】首都 建图 这恐怕是JOISC2020最简单的题目之一了。 对于一个城市的城镇,如果要使它连成连通块,必然需要将该城镇的点所组成的生成树上的所有点都结合在一起。 我们利用建虚树的方式建图,可以利用重链剖分加线段树优化建图,不过倍增优化建图可以少一只$\log$。
阅读全文
摘要:#### [Luogu5211 [ZJOI2017]字符串](https://www.luogu.com.cn/problem/P5211) ### 最小后缀理论、哈希、线段树 对于一个字符串的后缀,如果可能在它后面加入一个字符串之后,能够使该后缀能够成为最小后缀,我们设该后缀$\in T$,那么$
阅读全文
摘要:Luogu4501 [ZJOI2018]胖 膜拜$\operatorname$秒杀这道题。 线段树 我们可以观察一下Bellman-Ford算法在这张图上是如何进行松弛的,对于一个拥有从$0$号点来的边的瞭望塔$a_i$来说,它在第一步一定会被边$0-u$松弛,随后向两边扩张,直到遇到阻碍后停止,形
阅读全文
摘要:Luogu4384 [八省联考2018]制胡窜 参考blog 这篇博客的分类讨论情况、式子和参考blog中是基本一致,因为蒟蒻切不了,只能够学习$shadowice1984$大佬,解析都是自己写的。 $SAM+$线段树合并+分类讨论 字符串太可怕了!!! 原问题即给定一个字符串$S$,每次询问的字符
阅读全文
摘要:Luogu3380 【模板】二逼平衡树(树套树) 两年没写树套树了,今天写了一发线段树套替罪羊树。 结果替罪羊树写崩了,打开板子$QAQ$。 \(Code:\) #include<iostream> #include<cstdio> #include<algorithm> #include<cmat
阅读全文
摘要:Luogu6292 区间本质不同子串个数 \(SAM+LCT+Segment\_Tree\) 如果把一个子串看成一个元素,我们首先需要完成的是如何快速判断一个区间内的元素个数。 如果元素是数字,那么我们可以离线操作,枚举右端点$r$,同时不断更新每个元素出现的位置,也就是每当一个元素出现,我们把它在
阅读全文
摘要:CF666E Forensic Examination 广义$SAM$+线段树合并 这里利用到$SAM$中$endpos$集合的性质,我们可以注意到,在$SAM$的$parent$树上,祖先节点的$endpos$集合是包含子孙$endpos$集合的。 同时,所有子孙节点的$endpos$集合两两之间
阅读全文
摘要:https://www.luogu.com.cn/problem/P5490 扫描线 根据横坐标或纵坐标排序另一方向的线段,进入的赋值$+1$,离开的赋值$-1$ 注意一下,线段树的构造中,一个位置表示的是一个间隔,即$a_1$表示间隔$[1,2]\(,间隔个数为点的个数\)-1$ 如果用点来建,一
阅读全文
摘要:https://www.luogu.com.cn/problem/CF786B 线段树优化建图 对于区间$[l,r]$,可以用线段树中的节点优化建图 对于从外面指向指定区间的边,它只能往下转移 例: 如果存在$v\rightarrow [l,r]$,那么一定存在$v\rightarrow [s,t]
阅读全文
摘要:https://www.luogu.com.cn/problem/CF817F 线段树 数据范围极大,需要离散化 可以转换一下操作: $1.\(将\)[l,r]$区间赋值为$1$ $2.\(将\)[l,r]$区间赋值为$0$ $3.\(将\)[l,r]$区间$0$变成$1$,$1$变成$0$ 用$l
阅读全文
摘要:https://www.luogu.com.cn/problem/P3402 可持久化并查集 利用主席树的性质进行求解 注意弄清楚每个函数的返回值是主席树中的位置还是原序列中的位置(即在哪个集合) \(O(n \log^2n)\) C++ Code: #include<bits/stdc++.h>
阅读全文
摘要:https://www.luogu.com.cn/problem/P4556 线段树合并 线段树合并即合并两颗权值线段树,合并方法非常简单 但是这道题我调了很久 原因:数组开小了QAQ 线段树合并一般数组开$n \log n$级别,然后根据操作次数乘上常数(更大也无伤大雅) 我$ls$,$rs$数组
阅读全文

浙公网安备 33010602011771号