线段树,树状数组,RMQ之间的区别与联系
2015-04-07 15:31
309 查看
树状数组主要用于计算区间的和,在区间元素修改值的时候能够
快速修改而不是以O(n)的复杂度进行修改;
线段树是把区间以树的形式分拆为若干个小区间,每个小区间存
的都有一个值(树状数组的元素存的是区间值),所以线段树可
以快速获得这个区间里面的所有的节点(元素),主要用于计算
每个区间的最大最小元素(也可以快速修改区间元素的值)
RMQ是用数组的形式存储元素的值,用二分的方法进行计算区间
的最大最小值,所以他比较快!但是有个缺点就是每一次修改区
间的元素都会影响其最终结果,就是每一次修改都要进行一次
RMQ,所以修改的时候很复杂!
所以如果单纯的计算差点问线或者插线问点用树状数组,如果单
纯的求固定区间(即区间的元素无修改)的最大最小值用RMQ!
如果既求某一区间的最值且又修改值就用线段树!
快速修改而不是以O(n)的复杂度进行修改;
线段树是把区间以树的形式分拆为若干个小区间,每个小区间存
的都有一个值(树状数组的元素存的是区间值),所以线段树可
以快速获得这个区间里面的所有的节点(元素),主要用于计算
每个区间的最大最小元素(也可以快速修改区间元素的值)
RMQ是用数组的形式存储元素的值,用二分的方法进行计算区间
的最大最小值,所以他比较快!但是有个缺点就是每一次修改区
间的元素都会影响其最终结果,就是每一次修改都要进行一次
RMQ,所以修改的时候很复杂!
所以如果单纯的计算差点问线或者插线问点用树状数组,如果单
纯的求固定区间(即区间的元素无修改)的最大最小值用RMQ!
如果既求某一区间的最值且又修改值就用线段树!
相关文章推荐
- 线段树,树状数组,RMQ之间的区别与联系
- 线段树与树状数组的区别
- 字符串string 字符数组与指向字符串的指针pchar的区别与联系
- STL,ATL,WTL之间的联系和区别
- 角色dbo sysadmin public 之间的区别与联系
- 全局组、域本地组、通用组之间的区别与联系
- cookie和session机制之间的区别与联系
- 从“分析”的角度谈OLAP、数据挖掘、统计分析三者之间的区别和联系
- URI、URL和URN之间的区别与联系
- BPM与SOA之间的区别及联系
- cookie和session机制之间的区别与联系
- URI、URL和URN之间的区别与联系
- 分析:BPM与SOA之间的区别及联系
- String,CString,TCHAR,char之间区别和联系
- 分析:BPM与SOA之间的区别及联系
- URI、URL和URN之间的区别与联系
- 指针数组、指向指针的指针变量、指向一维数组的指针变量 区别联系
- DPL,RPL,CPL 之间的联系和区别
- STL,ATL,WTL之间的联系和区别