随笔分类 - 数据结构 -- 线段树
摘要:【LOJ 573】【LNR 2】单枪匹马(线段树) 题面 "LOJ" 题解 考虑拿线段树维护这个值,现在的问题就是左右怎么合并,那么就假设最右侧进来的那个分数是的形式,那么就可以维护一下每一个值的系数,就可以直接合并了。 ~~我代码又臭又长,还写得贼复杂~~ cpp inc
阅读全文
摘要:【agc028E】High Elements(动态规划,线段树,贪心) 题面 "AtCoder" 你有一个的排列。 一个长度为的字符串是好的,当且仅当: 两个序列这样构造: 一开始,令都是空的。然后对于每一个,依次考虑每一
阅读全文
摘要:【UOJ 388】【UNR 3】配对树(线段树,dsu on tree) 题面 "UOJ" 题解 考虑一个固定区间怎么计算答案,把这些点搞下来建树,然后,不难发现一个点如果子树内能够匹配的话就一定会匹配完,所以可以做到线性。 那么根据上面的方式,一条边会被匹配到,当且仅当把这
阅读全文
摘要:【洛谷5439】【XR 2】永恒(树链剖分,线段树) 题面 "洛谷" 题解 首先两个点的就是树上的的深度。 考虑一对点的贡献,如果这两个点不具有祖先关系,那么这对点被计算的次数是次。否则具有祖先关系,假设是祖先,则是$si
阅读全文
摘要:[BJOI2019]删数(线段树) 题面 "洛谷" 题解 按照值域我们把每个数的出现次数画成一根根的柱子,然后把柱子向左推导,中未被覆盖的区间长度就是答案。 于是问题变成了单点修改值,即修改两根柱子的长度。全体修改就可以理解为询问区间的平移。 那么只需要拿线段树维护这个东西就行了。
阅读全文
摘要:【BZOJ5507】[GXOI/GZOI2019]旧词(树链剖分,线段树) 题面 "BZOJ" "洛谷" 题解 如果就是链并裸题了。。。 其实发现还是可以用类似链并的思想,这个东西本质上就是对于当前的一个,考虑对于其他所有点的贡献,而他们的一定是到根节点链上
阅读全文
摘要:【CF1132G】Greedy Subsequences(线段树) 题面 "CF" 题解 首先发现选完一个数之后选择下一个数一定是确定的。 对于每个数预处理出左侧第一个比他大的数,那么这个数加入进来之后的答案都会增加一,拿线段树维护一下就行了。
阅读全文
摘要:【BZOJ5417】[NOI2018]你的名字(线段树,后缀自动机) 题面 "BZOJ" "洛谷" 题解 首先考虑的做法,对于每次询问的串,暴力在串的上跑,对于每个点记录其被匹配的最大长度,然后把每个被匹配到的点以及它到树根节点的所有节点全
阅读全文
摘要:[ZJOI2019]线段树(线段树) 题面 "洛谷" 题解 首先问题等价于前面每次操作都可能进行修改或者不修改,求所有情况下有标记点的个数。 考虑依次修改操作会产生的影响,把线段树节点进行分类。 这个点和以及其父亲都和修改区间无交:显然这个点的标记不会被修改。 这个点和修改区间无交但父亲和修改区间有
阅读全文
摘要:【CF833E】Caramel Clouds(线段树) 题面 "CF" "洛谷" 题解 首先把区间一段一段分出来,那么只有四种情况。 要么没有被任何一朵云被覆盖,那么直接就会产生这一段的贡献。 要么被一朵云覆盖,要么被两朵云覆盖。 要么被三朵及以上的云所覆盖,那么这段的贡献永远取不到。 对于每朵云预
阅读全文
摘要:【arc073f】Many Moves(动态规划,线段树) 题面 "atcoder" "洛谷" 题解 设表示第一个棋子在,第二个棋子在的最小移动代价。 发现在一次移动结束之后,总是有一个棋子会动到当前位置,因此状态改为当前是第次操作,第次操作没有动的那个棋子
阅读全文
摘要:【BZOJ5469】[FJOI2018]领导集团问题(动态规划,线段树合并) 题面 "BZOJ" "洛谷" 题解 题目就是让你在树上找一个最大的点集,使得两个点如果存在祖先关系,那么就要满足祖先的权值要小于等于儿子的权值。 首先离散权值。 考虑一个暴力,设表示以为根,
阅读全文
摘要:【BZOJ5291】[BJOI2018]链上二次求和(线段树) 题面 "BZOJ" "洛谷" 题解 考虑一次询问的答案。其中表示前缀和 $\displaystyle \sum_{i=l}^r\sum_{j=i}^n S_{j i+1,j}=\sum_{i=l}^r\sum_{j=
阅读全文
摘要:【NowCoder368E】车站(线段树) 题面 "牛客网" 题解 链交的结果显然和求解的顺序无关,因此我们可以拿线段树维护区间链的链交结果。 然后怎么求解最远点。 维护链交的时候再记录两个点表示到达链交两个端点的最远点编号,合并的时候也维护一下。 这样子就可以啦。 然后分类讨论论论论论论论论一下就
阅读全文
摘要:【BZOJ5294】[BJOI2018]二进制(线段树) 题面 "BZOJ" "洛谷" 题解 二进制串在模意义下,每一位代表的余数显然是这样子交替出现的。 其实换种方法看,就是 如果询问一个二进制串能否被整除,那么只需要考虑奇数位上的的
阅读全文
摘要:【APIO2018】新家(线段树) 题面 "UOJ" "洛谷" "BZOJ" 题解 ~~论比赛时想不到二分的危害,就只能Cu滚粗~~ 既然不要在线,那么考虑离线做法。 既然时间是区间,那么显然按照时间顺序处理答案。 显然 答案具有可二分性,那么对于当前位置而言,我们唯一要确定的就是$[x mid,x
阅读全文
摘要:【LOJ 6029】市场(线段树) 题面 "LOJ" 题解 看着就是一个需要势能分析的线段树。 不难发现就是把第二个整除操作化为减法。 考虑一下什么时候整除操作才能变成减法。 假设两个数为。那么就有$\displaystyle a [\frac{a}{d}]=b [\frac{b}{d}]
阅读全文
摘要:【BZOJ3821/UOJ46】玄学(二进制分组,线段树) 题面 "BZOJ" "UOJ" 题解 呜,很好的题目啊QwQ。 离线做法大概可以线段树分治,或者直接点记录左右两次操作时的结果,两个除一下就可以直接计算。 强制在线的话,一般而言,分治在线就弄成二进制分组。把所有修改操作进行二进制分组,每次
阅读全文
摘要:【BZOJ4821】[SDOI2017]相关分析(线段树) 题面 "BZOJ" "洛谷" 题解 看看询问要求的东西是什么。把所有的括号拆开,不难发现要求的就是 考虑修改操作。先是区间加法,对于而言直接加就好
阅读全文
摘要:【BZOJ2212】[POI2011]Tree Rotations (线段树合并) 题面 "BZOJ" "洛谷" 题解 因为是一棵二叉树,我们发现对于左右儿子而言只有两种放法。 不考虑左右儿子内部的相对顺序,那么发现两个儿子先后顺序的逆序对数是固定的,而确定好顺序之后显然就是一个分治的过程。 那么显
阅读全文