线段树
线段树是一种比较全能的区间维护算法
将一段区间的数据保留在一维数组中,根据需要递归查询
首先规定有这样一种二叉树形结构:
左右两个子节点分别保存父节点的区间从中点分割而成的左右两个区间的价值
左右两个子节点的编号分别为父节点的编号 pos * 2 和 pos * 2 + 1
这样就可以将一段区间的价值保存在一维数组中,但需要用到结构体保存树形结构的各项数据
1 | struct Tree{ |
建树过程如下:
1 | void build(int pos, int l, int r){ |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 二阶微分偏导!
