随笔分类 - [数据结构] 线段树
摘要:题目 Problem - 7116 题解 一个数最多加$\log n$次lowbit,之后只需乘2即可。因此可以结合线段树暴力,没好的暴力加,加好的直接打标记乘2。 原本我的方法是并查集维护那些区间乘2,那些区间暴力加,并查集合并。这样做时间复杂度相似,但是常数巨大。除了并查集本身的复杂度,每次更新
阅读全文
摘要:题目 source 题解 首先离散化,让区间值域数量级在1e5。比较容易可以想到一个O(n^2)的做法,即从下到上遍历每一列,在每一列对其下面有交集的列连一条有向边。长度最长的链就是答案。离散化后,就可以直接在线段树上操作区间。线段树维护区间内最长的链长和对应的行的编号。每次加入一行的若干区间更新最
阅读全文
摘要:Description 要求你实现一个画板支持以下操作: 0 清空画板 1 x y c 在位置(x, y)添加颜色c 2 x y1 y2 求矩形区域(1, y1)到(x, y2)不同颜色的个数。 3 结束 \((1≤x,y,y1,y2≤10^6,0≤c≤50)\) 思路 每种颜色一棵线段树,搞51棵
阅读全文
摘要:"Description" 思路 加、乘、设值是常规操作,主要难点是解决p次方的求和操作。这里用sum数组分别存储1到3次方的求和结果。因为对2次方求和的操作需要1次方求和,对3次方求和的操作需要2次方求和。因此维护好三个值就可以直接套板子。 线段树区间操作有多种操作时,要注意操作的优先级。在pus
阅读全文
摘要:Description 寒假来了,又到了小明和女神们约会的季节。 小明虽为屌丝级码农,但非常活跃,女神们常常在小明网上的大段发言后热情回复“呵呵”,所以,小明的最爱就是和女神们约会。与此同时,也有很多基友找他开黑,由于数量实在过于巨大,怎么安排时间便成了小明的一大心事。 我们已知小明一共有T的空闲时
阅读全文
摘要:Description 大意是要求实现一个可以给区间每个数开根,同时区间求和的线段树。 思路 由于开根后求和不等于求和后开根,所以每次更新都必须更新到根节点。所幸开根一个数到1之后再开根结果不变,所以如果发现某个线段的和等于r l+1说明无需再更新。 由于开根操作是指数级别,每个区间被更新的最大次数
阅读全文
摘要:Description 给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. 思路 和单纯的求面积非常相似,用len来储存被覆盖到两次以上的区间长度。
阅读全文
摘要:介绍 快速计算多个矩形覆盖区域的面积或者周长。 实现 求面积 oi_wiki的 "扫描线" 解释得很清楚了,就是求每次扫到得底边覆盖的长度乘上高的总和。 主要是代码实现的细节要注意。这里的线段树离散化处理记录一下。 "HDU1542 Atlantis"
阅读全文
摘要:"Description" 思路 板子题,需要离散化。然后从最后一张海报往前枚举看看有没有被完全覆盖。
阅读全文
摘要:功能 用$log_2n$时间复杂度对区间进行加减乘求和等等操作的数据结构。 实现 主要参考的是 "oi_wiki" 教程。 记录一下板子(即 "HDU1166 敌兵布阵" 的代码) 注意事项 1. 开4倍空间,再大点更好。 2. 叶结点不要pushdown,否则可能会越界(因为只开了4倍空间) 其它
阅读全文

浙公网安备 33010602011771号