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

摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1798 这题还4A... 注意:cnt 从1开始;各种模 p;乘法标记初始值是 1;可能乘 0。 代码如下: 阅读全文
posted @ 2018-11-01 08:13 Zinn 阅读(139) 评论(0) 推荐(0)
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3073 建两棵线段树,一棵从下往上连边,一棵从上往下连边,叶子节点之间也有连边; 区间向区间连边时,可以新建一个节点,log2n 条边就能变成 2logn 条边; 注意区间向区间连边也要连反边, 阅读全文
posted @ 2018-10-29 11:29 Zinn 阅读(197) 评论(0) 推荐(0)
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4756 合并子树的权值线段树; merge 返回 int 或者是 void 都可以。 代码如下: 阅读全文
posted @ 2018-10-29 09:21 Zinn 阅读(192) 评论(0) 推荐(0)
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2962 维护 sum[i] 表示选 i 个的乘积和,合并两个子树就枚举两边选多少,乘起来即可; 取反只需要把奇数个数的乘积和变成相反数即可; 关键是区间 + k:比如对于一个元素,原来是 a, 阅读全文
posted @ 2018-09-29 11:03 Zinn 阅读(139) 评论(0) 推荐(0)
摘要:题目:https://www.luogu.org/problemnew/show/P3960 NOIP 题,不用很复杂的数据结构...但又参考了许多; 要求支持维护删除第 k 个和在末尾插入的数据结构,线段树就很好; 所以每行一个线段树维护前 m-1 个元素,最后一列一个线段树即可; 但 n+1 个 阅读全文
posted @ 2018-09-10 16:08 Zinn 阅读(199) 评论(0) 推荐(0)
摘要:题目:https://www.luogu.org/problemnew/show/P1083 当初不会线段树的时候做这道题...对差分什么不太熟练,一直没A,放在那儿不管... 现在去看,线段树就直接秒了; 不过要注意一下基本的细节囧... 但本题 n 的范围比较微妙,正常线段树会 T 一个点(不过 阅读全文
posted @ 2018-08-04 18:04 Zinn 阅读(262) 评论(0) 推荐(0)
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4373 一个区间有以 k 为公差的数列,有3个条件: 1.区间 mx - mn = (r-l) * k; 2.差分数组的 gcd 是 k 的倍数; 3.没有重复出现的数; 其中1,2都可以用线段 阅读全文
posted @ 2018-07-11 21:11 Zinn 阅读(182) 评论(0) 推荐(0)
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2957 线段树维护两个值:cnt 能看到的最多楼房数; mx 最大斜率数; 对于一段区间,从左子区间的角度出发来限制右子区间,得到总区间的 cnt 和 mx; 转移时关注新斜率和左右子区间最大斜 阅读全文
posted @ 2018-06-20 10:34 Zinn 阅读(130) 评论(0) 推荐(0)
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1858 线段树...调了一个上午...(后面带 // 的都是改出来的) lazy 标记的下放好麻烦,还得考虑赋值和取反的先后顺序什么的... 因为在取反时把赋值标记 swap 了,所以下放的时候 阅读全文
posted @ 2018-06-15 11:32 Zinn 阅读(123) 评论(0) 推荐(0)
摘要:题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1018 线段树竟然还可以这样用! 维护的是一个矩形内部的连通情况,四个顶点之间有6种连通方式; 因为连通情况具有可合并性,所以可以用线段树来维护! 这篇博客写得很好:https://www.cn 阅读全文
posted @ 2018-06-11 20:41 Zinn 阅读(172) 评论(0) 推荐(0)
摘要:题目:https://www.luogu.org/problemnew/show/P2221 似乎按点来算贡献很方便,但我抱住一篇没有这样的题解磕了两天... 以下转载: 题意:维护一段数列 支持区间加和求区间所有子区间的和的和 一看就知道要用线段树 于是用sum表示区间所有子区间的和的和 但是知道 阅读全文
posted @ 2018-05-30 23:24 Zinn 阅读(258) 评论(0) 推荐(0)