點分治模板理解

2022-03-16 13:57:27 字數 444 閱讀 1963

點分治:模擬序列分治。

n^2列舉:掃了很多重複部分。

分治:共用重複部分,減少資訊收集冗餘。

log思想進行劃分。

單次操作:序列分治:中間點。點分治:樹上的節點。

點分治不僅要減少資訊收集冗餘,還要減少同一資訊處理次數。

例如對乙個點,不分治會掃n次,分治是log次。

就是一條鏈/繩,從頭到尾剪,不如從中間剪縮短的快。(資訊收集量規模減少快)

10,9upd:拼湊。直接掃不能拼起來。但是收集很多一半的資訊,拼起來,就充分利用已收集資訊。

加法變成乘法。例:聰聰和可可。

sum[0]=sum[1]=sum[2]=0

; que(rt,

0,d);

return sum[1]*sum[2]*2+sum[0]*sum[0];

view code

點分治模板

luogu 3806 近些日子學了點分治,當然只是學了個模板。所謂點分治,使用於處理樹上路徑的一種分治手段。因為利用了重心的性質,時間複雜度可以保證呢。所謂演算法流程 選取當前子樹的重心 計算路徑總數,不管路徑是否過當前重心 後面會去重 計算起點和終點在同一顆子樹中的合法路徑 因為這條路徑不是簡單路...

點分治模板

這兩天跟著學了一手樹上點分治模板,然後有一些感悟,決定來寫一發部落格.首先,鑑於鄙人的經驗,如果想要較快速地學習乙個新演算法,肯定還是先看一道經典的例題比較好,所以我們先來一道例題.給你一棵tree,以及這棵樹上邊的距離.問有多少對點它們兩者間的距離小於等於k 輸入格式 n n 40000 接下來n...

點分治模板

bzoj1316 由於之前板子寫得太爛了,今天把它重新整理改進了一下 vis表示每個點是否已經當過根,所以注意dfs,findroot函式的計算過程中是不會對vis進行修改的 修改時只需要考慮對dfs和solve中的有關位置進行修改即可,其它部分基本不變 include using namespac...