摘要: 此题相对于模板一,加了个区间乘,于是在模板一的基础上需要多开个数组(记录乘法懒标记)、多写个函数(区间乘),还有要把懒标记下放函数做些修改。 变量定义: sum[]:线段树节点对应区间的元素总和; addv[]:线段树节点对应区间的所有元素待加的值(懒标记),初值全部设为0; mulv[]:线段树节 阅读全文
posted @ 2017-05-24 22:58 Running-Coder 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 变量定义: sum[]:线段树节点对应区间的元素总和; addv[]:线段树节点对应区间的所有元素的待追加值(懒标记),初值全部设为0。 过程说明: 建树(Build): 若当前节点仅包含原序列中的一个值,即L=R,则直接赋值为序列中该值,否则递归建立左右子树后,将左右子树保存的sum值相加,即得到 阅读全文
posted @ 2017-05-24 22:53 Running-Coder 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 1.对于区间修改: 直接修改数组c[],即进行n次add,肯定会TLE; 于是在此引入一个新数组:addv[],addv[i]指的是以结点i为根的树的所有元素加上addv[i]。 设将区间[a,b]中每个数加上x, 则只需自b向左,将相应的addv[]加上x,再自a-1向左,将多修改的结点的addv 阅读全文
posted @ 2017-05-24 22:49 Running-Coder 阅读(143) 评论(0) 推荐(0) 编辑