CDQ小結

其實就是擴展歸併排序。
適用於處理偏序問題。算法

算法

對於三維或以上偏序,咱們採用CDQ分治。
第一個思想是排序。
先使第一維有序,而後將區間分紅兩半後兩邊各自按第二維排序,能夠保證左一半的第一維小於右一半。
而後就能夠對左右作相似歸併排序的事情,用左邊更新右邊的答案。
更新過程當中用樹狀數組保證第三維有序。數組

時間複雜度\(O(logn*nlogn)=O(nlog^2n)\)spa


技巧

大概就是能夠把一些二位數點問題變化爲橫縱座標,時間的三維偏序問題處理。排序

對於高維偏序能夠CDQ套CDQ,可是5維以上還不如K-D tree和n^2枚舉。io


題目

一.洛谷P4169 [Violet]天使玩偶/SJY擺棋子
由於是曼哈頓距離,只考慮\(x\leq qx,y\leq qy\) 的點中 \(x+y\) 的最大值,而後旋轉座標系就能夠統計到全部點。
咱們將一個詢問拆成了四個偏序問題,CDQ便可。class


二.洛谷P5459 [BJOI2016]回轉壽司
統計前綴和\(A_i\),而後前綴和作差統計區間
保證\(l<r,L<A_r-A_{l-1}<R\)
那麼能夠轉化爲\({A_{l-1}+L<A_r<A_{l-1}+R}\)
但其實能夠發現\(l<r\)並無什麼用,由於前綴和是單調的
因此其實能夠相似二維偏序\(O(nlogn)\)
或者採用不排序直接歸併的CDQ實現擴展

相關文章
相關標籤/搜索