CDQ分治 整體二分

2021-08-21 03:48:19 字數 712 閱讀 4112

cdq分治本質就是分兩半,分別計算兩邊區間的貢獻,然後再考慮跨區間的貢獻。

具體教程網上一搜一大把……

題單:

51nod 1376 :

考慮用 f【i】記錄以i結尾的最長上公升子串行的長度&&個數,然後每次切兩半,先計算【l,mid】的答案,然後按照原陣列a的值進行排序,從前往後掃,如果下標在前一半區間則更新乙個字首最優值,如果是後一半則進行更新。然後遞迴做右半邊即可。

**:注意該題是先考慮左邊,然後考慮跨區間,再考慮右區間。

bzoj1176:

首先把詢問拆成四個差分一下,一開始先對操作按照x、y排一下序,然後每次二分操作時間mid,<=mid的操作進行更新,>=mid的詢問貢獻答案,然後遞迴即可。

**:然後是鬼畜的整體二分~~~

就是把所有詢問放在一起,如果答案<=mid則被分到左邊,>mid則消去前面區間的貢獻,然後分到右邊。繼續遞迴做即可。

bzoj2376&&洛谷1527

整體二分第k大的數mid,將》mid的數所在位置+1,然後詢問矩形內1個數cnt<=k則分到左邊,>k則減去cnt,然後分到右邊。遞迴處理即可。

**:bzoj3110

整體二分套個區間修改&&查詢的樹狀陣列即可。

**:luogu2617

帶修區間第k大,類似做法。

**:bzoj2527&&luogu3527

裸題。

**:

CDQ分治 整體二分

ps 2683 1176是雙倍經驗題 題意 一種操作一種詢問 1,x,y,a 表示將 x y 點值加上a 2,x1,y 1,x2 y2 表示詢問以 x 1,y1 為左上角 x 2,y2 為右下角的矩陣內點和。題意 給定一堆花,每個花有三個屬性,定義一朵花比另一朵花美麗當期僅當三個值都大於等於另一朵花...

離線分治 整體二分與CDQ分治

這兩個演算法都是離線的分治演算法。其中cdq分治是基於時間的分治演算法。整體二分是基於值域的分治演算法。先講講整體二分吧。我們拿 zjoi2013 k大數查詢作為例子。一 原理 將所有的修改和查詢操作離線存下來。每次二分所有修改和詢問操作,分成兩部分解決。二 每個子問題 slove front,la...

cdq分治 整體二分 學習筆記

本部落格還是從二維偏序開始鋪墊,對cdq分治進行講解 實際上是給自己講,因為沒人看 前置知識 歸併排序 cdq分治的學習需要保證對歸併排序的理解,雖然它是乙個基礎演算法。給定 n 個元素,第 i 個元素有兩個屬性 a i 和 b i 設 f i 為滿足 a j leq a i,b j leq b i...