1. 程式人生 > >區間資料結構及其特點

區間資料結構及其特點

1.線段樹:
時間複雜度O(logn)【建樹時間複雜度O(nlogn)】
優勢:能夠處理區間問題(維護區間)
劣勢:寫法繁雜,空間消耗高,對區間眾數問題難以實現,N^2是無法逾越的障礙(參考小z的襪子)
2.樹狀陣列:
時間複雜度O(logn)
優勢:寫法簡單,空間消耗少(沒有儲存l,r的值)
劣勢:只能夠維護字首和/積/最大最小
變形應用:
求字尾和,利用差分陣列實現、還可以用差分陣列來求區間和代替線段樹
https://blog.csdn.net/wzw1376124061/article/details/73113297
3.RMQ:
ST(稀疏表),時間複雜度O(n*logn)
優勢:如果不進行修改操作的話,ST的效率會更高(相比於線段樹來說)
劣勢:有修改操作,會降低時間複雜度,這與ST表的形成有關,ST表的建立設計了動態規劃演算法
4.莫隊演算法:


時間複雜度O(n^(3/2))
優勢:用以求解區間眾數問題,特點是一種離線演算法,所以,一定要以某種順序對輸入的查詢區間進行排序
劣勢:難以理解
----------------------------
莫隊演算法的一些變形:
1.樹上莫隊
2.草叢莫隊
3.帶修改莫隊

莫隊演算法的兩種寫法:
*1.分塊+排序
2.曼哈頓+最小生成樹


一些莫隊題目:
http://www.codeforces.com/contest/620/problem/F
http://www.codeforces.com/contest/617/problem/E
http://codeforces.com/contest/633/problem/H
小z的襪子
http://acm.hdu.edu.cn/showproblem.php?pid=3874
-----------------------------
HDU 3874第一道莫隊題
-----------------------------
莫隊時間複雜度的解釋:
https://zhuanlan.zhihu.com/p/25017840
-----------------------------
莫隊的資料上限;
n=1e5,m=1e6