线段树合并
OriginalRecipe
这个作者很懒,什么都没留下…
展开
-
梦幻布丁HYSBZ-1483 线段树合并
Part 1 本题要求当前有多少段颜色,其实可以看成有多少个相同颜色的联通块,我们可以一个一个颜色进行计数。在颜色转换时利用线段树合并(归并思想)来维护当前有多少个相同颜色的联通块。 Part 2 对于每种颜色,可以用一颗动点线段树来维护其颜色段数,每个叶子节点存的就是这个节点是否为当前这种颜色。然后在Up操作里维护当前区间内这种颜色的段数。同时还要记录每个区间左端点以及右端点是否为这种颜...原创 2019-01-11 15:05:04 · 207 阅读 · 0 评论 -
rausen loves cakes HDU - 5997线段树合并
Part1 感觉本题与梦幻布丁(题解)十分相似。只不过由全局查找变为区间查找。若是此时对于每种颜色都查询一遍区间内颜色段数复杂度必定超。但由梦幻布丁这道题做铺垫后,可以想到维护一个区间内所有颜色的段数,可以另外拿一个线段树来维护,查询时在这个线段树上回答即可。 Part2 为了快速确定某两个相邻的点是否颜色相同,可以用并查集。把每种颜色的代表点存下来(也就是随便存下一个这种颜色的点的位置)...原创 2019-01-11 16:38:05 · 262 阅读 · 0 评论 -
七彩树 HYSBZ - 4771线段树合并
Part1 本题是查找一个节点x的字树内深度与其相差不超过d的节点有多少种颜色。如果单纯考虑有多少个点,应该如何求,如何维护深度在一个区间内且是x的后代的信息呢?我们可以每个节点用一颗以下标为权值的线段树来维护(后面记为线段树X)。用线段树合并来完成所有信息的处理。但如何查找深度在一个区间里的信息呢?我们可以将每个节点重新以深度编号,编号与深度正相关(也就是编号越大的点深度越大),在预处理处每个深...原创 2019-01-18 19:30:11 · 333 阅读 · 0 评论 -
魔法少女LJJ HYSBZ - 4399 线段树合并
Part 0 这道题其实就是一个码农题,考的是代码功底,没有太多思维难点。 注意题目的HINT说的请认真阅读题面,你会发现c≤7c \leq 7c≤7然后再看一下询问。 剩下唯一的难点只剩下维护一个联通块内所有节点权值的积。首先,要知道以下公式。 lnab=lna+lnb\ln ab = \ln a + \ln blnab=lna+lnb ln\lnln函数是单调的,故判断...原创 2019-01-18 20:38:23 · 175 阅读 · 0 评论 -
DZY Loves Sorting HDU - 5649 线段树合并和分裂
Part 0 这道题就是[Tjoi2016&Heoi2016]排序的升级版。可以直接改成多Case过去的。 本题有两种做法,一种是普通线段树+二分(复杂度n⋅log2(n)n \cdot \log^{2}(n)n⋅log2(n)) 还有的就是现在要讲的线段树合并+线段树分裂(复杂度n⋅log2(n)n \cdot \log^{2} (n)n⋅log2(n)) Part 1 其实讲一个区...原创 2019-01-18 21:28:46 · 287 阅读 · 0 评论 -
大根堆 HYSBZ - 4919 线段树合并
Part 0 由这题,可以联想到最长不下降子序列。对于每个节点,我们定义DP[i]为这个子树内所有节点堆顶元素等于i时的最大的堆的大小。我们可以把这个数组放在线段树上维护。线段树的叶子节点存的就是DP[i]。线段树节点[L—R]存的是这段区间DP值的最大值。 Part 1 线段树合并时就可以一直更新这个DP数组。由于每个子节点是互不干扰的,故合并时记录两颗线段树前面的DP最大值。(若当前操作区间...原创 2019-01-19 19:49:15 · 314 阅读 · 0 评论