聽課記錄 210220 分治,樹分治,CDQ分治

2022-03-22 11:17:54 字數 735 閱讀 2299

sszxdzy20%

分而治之

分治思想的最簡單體現,將具有特徵的問題分解成子問題,子問題可用同樣方法(即遞迴)處理。對於子問題之間的聯絡,特殊處理。

與歸併排序密不可分,例:

1 2 3 4   1 2 3 4

1 2 3 4 5 6 7 8

求遞迴式的時間複雜度

在平面上按x座標排序分治,再在歸併排序過程中考慮y座標。

cf480e

求樹上距離不大於k的點對個數,即路徑。樹分治就是解決樹上路徑問題的高效演算法。

分為點分治和邊分治

spoj ftour2(求選擇不超過k個黑點的路徑最大權值):點分治

bzoj2152(求2個點之間路徑權值和是3的倍數的概率):

bzoj1758():分數規劃+長鏈剖分

cdq分治需要題目支援離線演算法,且修改操作互不影響

des:求比每個元素的三種屬性都小的元素個數

sol:cdq分治

bzoj1176(維護矩陣,支援單點修改和範圍查詢):

bzoj3295,cqoi2011(動態逆序對:cdq分治經典例題,刪除元素的同時求逆序對個數):

bzoj2716/2648(sjy擺棋子:在棋盤上放下黑棋和白棋,對於白棋輸出這個白棋和離它最近的黑棋之間的距離,此處的近和距離指曼哈頓距離):二維偏序||kdtree

題單:

演算法02 分治

分治,就是 分而治之 就是把乙個複雜的問題分成兩個或更多的相同或相似的子問題,直到最後子問題可以簡單的直接求解,原問題的解即子問題的解的合併。分治法常常跟遞迴一起使用,借助遞迴,我們可以方便地將問題分解再將結果合併。分解 將原問題分解為若干個規模較小,相互獨立,與原問題形式相同的子問題 遞迴 若子問...

Luogu3806 點分治(點分治)

給定一棵有n個點的樹 詢問樹上距離為k的點對是否存在。n,m 接下來n 1條邊a,b,c描述a到b有一條長度為c的路徑 接下來m行每行詢問乙個k 對於每個k每行輸出乙個答案,存在輸出 aye 否則輸出 nay 不包含引號 點分治的模板題目,不做過多的解釋 據我這個蒟蒻的觀察 這道題的複雜度是o n2...

Luogu3806 點分治(點分治)

給定一棵有n個點的樹 詢問樹上距離為k的點對是否存在。n,m 接下來n 1條邊a,b,c描述a到b有一條長度為c的路徑 接下來m行每行詢問乙個k 對於每個k每行輸出乙個答案,存在輸出 aye 否則輸出 nay 不包含引號 點分治的模板題目,不做過多的解釋 據我這個蒟蒻的觀察 這道題的複雜度是 o n...