线段树
思想:将一个长度不为 1 的区间划分成左右两个区间
递归求解!!!
可以维护区间信息如下:区间修改、区间求和、区间相乘、区间最大值、区间最小值
注意:在写代码的时候需要传入参数有:
1、线段树的数组的下标(注意这里的线段树数组和原来的数的数组(也就是下面的数组a)是不一样的,是根据原来的数组新建立的线段树)
2、线段树维护的区间,这个区间要自己规定好,一般一颗线段树的根节点的区间就是维护的整个线段树的区间(注意这个区间要提前开到最大,也就是能保证维护更新(如扩展原数组操作)后的区间。————————这个区间说的是维护的原数组的下标范围
例题见火星饭店
注意线段树要先更新子节点再更新父节点
线段树的建立
线段树的长度至少要为原数组长度的4倍
区间更新
此处是在某个点加上值
区间查询:查询的是原数组[l, r]的区间信息
此处查的是区间和