线段树可以进行非常多的操作,包括单点修改、区间求和、求区间最大值、染色、求面积、长度、最大连续和…
对于一个数组,可以维护出一个关于它的线段树。
线段树的结构类似于完全二叉树,可以用数组进行存储,其中每个结点都会存很多信息,是一个struct结构体。
以求数组区间和的问题为例,线段树的结点可定义为:
const int N = 100010;
int q[N];
struct Node
{
int l, r; // 结点表达的区
线段树可以进行非常多的操作,包括单点修改、区间求和、求区间最大值、染色、求面积、长度、最大连续和…
对于一个数组,可以维护出一个关于它的线段树。
线段树的结构类似于完全二叉树,可以用数组进行存储,其中每个结点都会存很多信息,是一个struct结构体。
以求数组区间和的问题为例,线段树的结点可定义为:
const int N = 100010;
int q[N];
struct Node
{
int l, r; // 结点表达的区