线段树
文章平均质量分 82
u010152669
这个作者很懒,什么都没留下…
展开
-
线段树多个信息的传递(加法和乘法) seq
用线段树对一段的数据进行单纯的加法、乘法,这些都不难,只需要在某个区间内做个懒标记,然后经过每个结点时都把懒标记往下传递。 如果有多个标记,最简单的就是加减混合。多个信息的难点就在于如何把信息结合起来,要知道5 + (6 * 2)是不等于(5 + 6) * 2的。 这题需要把懒标记写成d * x + y,原数据是d,先乘上x再加y(x的缺省值是1,y是0)。 如果有一原创 2013-07-11 19:04:28 · 870 阅读 · 0 评论 -
斐波纳契数列 线段树的维护
像一般的数列维护一样,这题也差不多。有一个数列a,修改操作是将a[i] .. a[j]的值都加上一个d,询问操作就有点不同,给出i和j,求出a[i] * fib(0) + a[i + 1] * fib(1) + a[i + 2] * fib(2) + ... + a[j] * fib(j - i)模上一个数的结果。其中fib就是斐波纳契数列,即fib(0) = fib(1) = 1,对于fib(i原创 2013-07-23 10:49:17 · 786 阅读 · 0 评论 -
线段树经典题目 矩形面积
有N(100000)个长方形,并且它的边长平行于x轴或y轴(范围50000)。求这N个长方形覆盖的面积,重叠部分的面积只算一次。 在平面上的一些统计的题目,往往是用线段树,把x轴作为扫描线,然后把y轴映射到线段树上。这题也是如此: 若坐标范围太大,可以将其离散化,这题不需要。如图,有两个矩形。 竖细线作为扫描线,把y轴映射到线段树。在处理每一条扫描线的同时,首先统计线段树中已经被覆盖原创 2013-07-23 09:55:59 · 875 阅读 · 0 评论