莫隊演算法是一種離線處理區間問題很強的演算法,簡單學了下。
例題:這題沒有地方提交,解答在犇犇部落格裡很清楚,反正就是分塊,然後按照l所在塊號,和右端點排序,離線搞
貼個kuangbin菊苣的**當莫隊的模版把:
還有就是最小曼哈頓生成樹:
這個就是把平面分成8塊,然後在45度裡求解,然後翻轉3次,就能求出,給個模版把:
我們只需考慮在一塊區域內的點,其他區域內的點可以通過座標變換「移動」到這個區域內。為了方便處理,我們考慮在y軸向右45度的區域。在某個點a(x0,y0)的這個區域內的點b(x1,y1)滿足x1≥x0且y1-x1>y0-x0。這裡對於邊界我們只取一邊,但是操作中兩邊都取也無所謂。那麼|ab|=y1-y0+x1-x0=(x1+y1)-(x0+y0)。在a的區域內距離a最近的點也即滿足條件的點中x+y最小的點。因此我們可以將所有點按x座標排序,再按y-x離散,用線段樹或者樹狀陣列維護大於當前點的y-x的最小的x+y對應的點。時間複雜度o(nlogn)。
曼哈頓距離最小生成樹與莫隊演算法
一 曼哈頓距離最小生成樹 曼哈頓距離最小生成樹問題可以簡述如下 給定二維平面上的n個點,在兩點之間連邊的代價為其曼哈頓距離,求使所有點連通的最小代價。樸素的演算法可以用o n2 的prim,或者處理出所有邊做kruskal,但在這裡總邊數有o n2 條,所以kruskal的複雜度變成了o n2log...
P3730曼哈頓交易 莫隊演算法
題目鏈結 題目大意 乙個區間內有n個數字,有m個詢問,每次詢問乙個區間。回答這個區間的第k大的熱度值。熱度值定義 數字i的熱度值為 這個區間內i的出現次數。權值分塊 莫隊演算法 首先暴力做法 對於每乙個區間,暴力搜尋出每個數字的出現次數,把出現次數push到乙個陣列裡面,尋找到出現次數的第k大的數字...
曼哈頓距離最小生成樹
一 前人種樹 部落格 曼哈頓距離最小生成樹與莫隊演算法 部落格 學習總結 最小曼哈頓距離生成樹 二 知識梳理 曼哈頓距離 給定二維平面上的n個點,在兩點之間連邊的代價。即distance p1,p2 x1 x2 y1 y2 曼哈頓距離最小生成樹問題求什麼?求使所有點連通的最小代價。最小生成樹的 環切...