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

    xiaoxiao2025-05-18  9

    树状数组主要用于计算区间的和,在区间元素修改值的时候能够

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

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

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

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

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

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

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

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

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

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

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

    如果既求某一区间的最值且又修改值就用线段树!

    转载请注明原文地址: https://ju.6miu.com/read-1299021.html
    最新回复(0)