线段树&&ST

Posted wsy107316

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线段树&&ST相关的知识,希望对你有一定的参考价值。

一:

区间问题:什么时候用线段树,什么时候用ST

如果需要动态维护,需要添加或者删除,那么就必须用到线段树,线段树的单次查询时间为O(logn),如果查询量大还是很浪费时间。

在不需要动态维护的时候,ST算法的查询速度可以到达O(1)

二:

【什么样的问题适合ST算法】
例如,RMQ问题和RGQ问题适合ST算法,那么这两个问题有什么特性呢,以RMQ问题举例。

求{2, 3, 1, 5, 4}的最小值,可以通过求出a = min{2, 3, 1, 5}, b = min{3, 1, 5, 4}, ans = min{a, b}求出。

可以看到,求一个大区间的最小值,可以通过求两个小区间的最小值来求得,前提是这两个小区间的并集是这个大区间,至于有没有交集,对结果没有影响。所以求{2, 3, 1, 5, 4}的和,就不能这么做了。

因此,如果一个大区间问题可以由两个小区间(这两个小区间的并集是这个大区间)得到,这两个小区间是否有重叠对大区间的结果没有任何影响。那么这类问题就可以用STST算法来做。这和分治算法有点像,但是核心要求完全不一样,分治算法的子问题不能有重叠。而ST算法对这一项没有要求

以上是关于线段树&&ST的主要内容,如果未能解决你的问题,请参考以下文章

权值线段树&&可持久化线段树&&主席树

bzoj2006 [ NOI2010 ] && bzoj3784 --点分治+线段树+堆

51nod1287(二分/线段树区间最值&单点更新)

线段树初步&&lazy标记

luogu P3372ybtoj线段树课堂过关例题2区间查改 &模板线段树 1

E. Boring Segments(尺取&线段树)