前言
懒得打线段树模板,在此为记。
Begin
首先,线段树是什么用的呢?如果我们能用其他简单的数据结构来维护,我们为什么要用线段树呢?
所以先看如下题目:
求区间和[l,r]。
- 暴力 O(n) 询问
- 前缀和 O(1) 询问
好吧,这好像和线段树没什么关系。
那么再看如下题目:
有两种操作,修改数组中一个元素的值或询问区间和[l,r]。
操作 暴力 前缀和 修改 O(1) O(n) 询问 O(n) O(1) 这样就很容易卡掉了。
所以有没有修改和询问都是log(n)的算法呢?
于是线段树就出现了~~
其实还有树状数组
使用范围
支持区间修改,单点修改,区间查询最值,区间和,维护树链剖分等。。。