随笔分类 -  数据结构——线段树

摘要:题意 给你 $n$ 个集合,每个集合中包含一些整数。我们说一个集合表示一个整数当且仅当存在一个子集其异或和等于这个整数。现在你需要回答 $m$ 次询问 ($l, r, x$),是否 $l$ 到 $r$ 的每个集合都能表示 $x$. 分析 先求出每个集合的线性基,然后用线段树维护线性基的交,详见代码 阅读全文
posted @ 2019-08-01 09:20 Rogn 阅读(389) 评论(0) 推荐(1) 编辑
摘要:题目 链接 题意:对一个数列进行以下两种操作: 给$[l,r]$中的每个数开平方(下取整) 询问$[l,r]$中各个数的和 解决方法 显然,区间开平方不满足区间可加性,所以对区间中每个数开平方不能通过标记完成,只能使用暴力的单点修改。因为1e12的数开方6次就变成了1,所以需要修改的次数实际上很少。 阅读全文
posted @ 2019-07-08 17:25 Rogn 阅读(382) 评论(0) 推荐(0) 编辑
摘要:题目 题目链接 大意:维护一个数列,有两种操作: 查询操作Q L:查询当前数列中末尾L个数中的最大的数 插入操作A n:将n加上t再对D取模,将所得值插入数列末尾 解决方案 由题意知,只有两种操作:单点修改、区间查询 阅读全文
posted @ 2019-07-07 00:15 Rogn 阅读(258) 评论(0) 推荐(0) 编辑
摘要:add无序,set有序。规定同时有两个标记时,表示先执行set再执行add。 1. 更新操作: 此操作中需要维护标记,这里保证了不会出现先有add再有set,这种情况只会保留set。 值得注意的是,标记下推时左右子树都需要维护,其中递归进入的子树会在递归结束时自然调用maintain函数,而另一个子 阅读全文
posted @ 2019-07-05 21:56 Rogn 阅读(493) 评论(0) 推荐(0) 编辑
摘要:快速操作序列$Ⅱ$:给出一个有$n$个元素的数组$A_1,A_2,..,,A_n$,设计一个数据结构支持以下两种操作: $Set(L,R,v)$:把$A_L,A_{L+1}, ..., A_R$的值全部修改成$v$($v \geq 0$) $Query(L,R)$:计算子序列$A_L,A_{L+1} 阅读全文
posted @ 2019-06-29 01:11 Rogn 阅读(431) 评论(0) 推荐(0) 编辑
摘要:上一节介绍了点修改与区间查询的线段树,事实上,线段树还可以做得更多。本节讨论区间修改问题。 给出一个$n$个元素的数组$A_1,A_2,...,A_n$,你的任务是设计一个数据结构,支持以下两种操作: $Add(L,R,v)$:把$A_L,A_{L+1}, ..., A_R$的值全部增加$v$ $Q 阅读全文
posted @ 2019-06-28 23:09 Rogn 阅读(400) 评论(0) 推荐(0) 编辑
摘要:动态范围最小值问题。给出一个有$n$个元素的数组$A_1, A_2, ..., A_n$,你的任务是设计一个数据结构,支持以下两种操作: $Update(x, v)$:把$A_x$修改为$v$ $Query(L, R)$:计算$min \{ A_L, A_{L+1},...,A_R \} $ 如果还 阅读全文
posted @ 2019-06-27 00:27 Rogn 阅读(465) 评论(2) 推荐(0) 编辑
摘要:线段树详解 By 岩之痕 目录: 一: 综述 二:原理 三:递归实现 四:非递归原理 五:非递归实现 六:线段树解题模型 七:扫描线 八:可持久化 (主席树) 九:练习题 一:综述 假设有编号从1到n的n个点,每个点都存了一些信息,用[L,R]表示下标从L到R的这些点。 线段树的用处就是,对编号连续 阅读全文
posted @ 2018-11-18 23:01 Rogn 阅读(1376) 评论(0) 推荐(0) 编辑