您的位置:首页 > 其它

线段树,树状数组,RMQ之间的区别与联系

2016-08-14 12:44 260 查看
树状数组主要用于计算区间的和,在区间元素修改值的时候能够

快速修改而不是以O(n)的复杂度进行修改;

线段树是把区间以树的形式分拆为若干个小区间,每个小区间存

的都有一个值(树状数组的元素存的是区间值),所以线段树可

以快速获得这个区间里面的所有的节点(元素),主要用于计算

每个区间的最大最小元素(也可以快速修改区间元素的值)

RMQ是用数组的形式存储元素的值,用二分的方法进行计算区间

的最大最小值,所以他比较快!但是有个缺点就是每一次修改区

间的元素都会影响其最终结果,就是每一次修改都要进行一次

RMQ,所以修改的时候很复杂!

所以如果单纯的计算差点问线或者插线问点用树状数组,如果单

纯的求固定区间(即区间的元素无修改)的最大最小值用RMQ!

如果既求某一区间的最值且又修改值就用线段树!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: