随笔分类 - 数据结构
摘要:树状数组 区间加 & 区间和 小记 考虑差分数组的变化,即 \(d_i=a_i-a_{i-1}\)。 那么区间加时,会使 \(d_l\gets d_l+val,d_{r+1}\gets d_{r+1}-val\)。 考虑求区间和,转化为求前缀的和,即求 \[\begin{aligned} \sum
阅读全文
摘要:一种离线时 O(q log n) 空间的二维树状数组 若所有 \(q\) 个操作不预处理,每次都动态开点,时空复杂度则都是 \(O(q\log ^2n)\) 的(用哈希表存储)。 考虑将所有将来会执行修改操作的位置拎出来,对于第一维的每个位置,将第二维离散化,那么空间就是 \(O(q\log n)\
阅读全文
摘要:可持久化WBLT 学习笔记 什么是 WBLT WBLT 是一种 Leafy 的平衡二叉树,即序列中的元素都挂在叶子处,而非叶节点则处理子树内叶子的信息合并,线段树就是典型的 Leafy 树。每个非叶节点都有两个儿子,不难发现对于长为 \(n\) 序列,其 WBLT 有 \(2n-1\) 个节点。 W
阅读全文
摘要:Slope Trick 总结 Slope Trick Slope Trick 用于维护凸性的分段一次函数,且每一段一次函数的斜率满足为整数且级大小为 \(O(n)\)。 使用 Slope Trick 可以方便地求函数的最值、对后缀取最值、给全局加上一次函数或绝对值函数,要保证操作前后函数都为凸性。
阅读全文
摘要:线段树:区间历史和 & 区间历史最值 & 区间最值操作 区间历史和 例题:Loj#193.线段树历史和。 一个数列,需要支持区间加、区间求和、区间求历史和。 矩阵乘法 每个点存 \(len,s,h\) 分别表示区间长度、区间和、区间历史和。用一个行向量表示这些信息。 区间加 \(v\) 则有转移,右
阅读全文
摘要:P10200 [湖北省选模拟 2024] 花神诞日 题解 首先注意到一个集合中两两异或和的最小值就是,排序后相邻两个数异或和的最小值。证明可以考虑放到 01-Trie 上,从高往低位建树,求一个数与之异或的最小值,就是使高位相同位数尽可能多,则就是 01-Trie 上的前一个叶子或后一个叶子。 由此
阅读全文
摘要:线段树分治-学习笔记 阅前须知:本文给出了线段树分治的一道例题以及多道习题,同时给出了部分实现的代码,帮助学习线段树分治。 总述 线段树分治是一种离线算法,在于把修改挂在线段树的节点上,通过遍历线段树求出每个叶子节点的答案,以减小复杂度。 例题 P5787 二分图 题目大意:\(n\) 个点的图上,
阅读全文
摘要:[NOISG2022 Qualification] Dragonfly Solution in O(d log d) 提供一个使用线段树合并、栈、树状数组的严格单 \(\log\) 离线做法。 题目大意:给你一棵树,每个点有权值和颜色,每次问你一个从 \(1\) 开始的路径,求权值不为 \(0\)
阅读全文
摘要:[Ynoi2016] 镜中的昆虫 题解 好题值得一做。 题目大意:给一个序列,有若干个离线询问,每次可以区间推平或询问区间内的颜色个数,数据范围是 \(10^5\) 级别。 解题思路:我们可以先考虑一个弱化版,每次是单点修改怎么做,类似于 CF848C。 我们考虑维护出每一个位置上一个与它相等的位置
阅读全文
摘要:楼房重建 与 线段树前缀最大值 P4198 楼房重建 先来看原题:P4198 楼房重建 设 \(s_i=\frac{H_i}{i}\),即斜率。 本质是要求 \(\max_{i=1}^{j-1}s_i\le s_j\) 的个数。 由于带单点修改,我们考虑在线段树上维护这个信息。 对线段树上每个节点
阅读全文

浙公网安备 33010602011771号