在上一节线段树(原理、构造和区间查询,例题:Balanced Lineup)中介绍了线段树的构造,下面就来说一下它的区间操作。
区间操作与Lazy-Tag有关,如果修改操作是对区间内的每个元素一一修改,就会比较繁琐低效,目前的解决办法是线段树的tree[i].data记录的是区间i的值(详细见上节),可以再定义一个tag[i],用来统一记录区间i的修改。若修改的是一个线段区间,就只进行整体上的修改,内部的每个元素先不进行修改,直到这个线段区间的一致性被破坏时,才把变化值传递给下一层的子区间,则每次区间修改的复杂度为O()。
例题:
题目:
如题,已知一个数列,你需要进行下面两种操作: