这几天主要在看博客中里的例题,然后刷了几道线段树专题中的例题。感觉线段树很多是用来缩减时间复杂度的,一般的遍历数组时间复杂度为O(n),而线段树搜索时间复杂度为O(logn),但是需要的空间为一般数组空间的四倍,到时候还得根据具体题目具体分析。
线段树最简单的应用就是记录线段是否被覆盖,随时查询当前备覆盖线段的总长度。可以在结点结构中加入一个变量代表当前结点代表的子树中被覆盖的线段长度和。
对于区间更新直接套用单点更新的方式会出现超时现象,对于这种问题是采用Lazy思想。对整个结点进行的操作,先在结点上做标记,而并非真正的执行,直到根据查询操作的需要分成两部分。当需要查询的范围超过所标记的数组范围时,则需要对结点进行更新了。
虽然看了一些线段树的题了,但是对线段树的理解还有点欠佳,后面继续加强对线段树的理解,熟练掌握其算法。
继续加油!