啟發式合併 dsu on tree 姿勢

2021-08-08 08:31:45 字數 570 閱讀 9877

一場比賽有兩道,好tm巧啊

這種方法其實就是通過性質優化的暴力。遍歷時輕邊優先。

首先肯定是拆位了,然後可以用trie維護一下某顆子樹內的點的串,很容易統計答案。 (具體要看題解了)

但是暴力加/刪點會t,就要用dot了。

發現計算完乙個兒子的答案之後,整顆子樹都被新增到了trie中。但如果要繼續做其他兒子所以要清空trie.

有一顆子樹是可以不用清空,用於統計當前點的答案的。 當然是重兒子最好了。於是我們把重兒子放到最後遍歷就可以了。

分析一下時間複雜度,計算答案時,每乙個點被加入trie的次數就是他到根所在的輕邊條數。

又因為點到根的路徑上輕邊條數是log條,所以時間是n log n.

(每一條輕邊意味著當前子樹大小至少為輕邊所在兒子大小a+重邊大小(>a) >=2a)

dsu on tree 樹上啟發式合併

詳解 dsu on tree 樹上啟發式合併 演算法總結 習題 經典例題 題意 一棵樹有n個結點,每個結點都是一種顏色,每個顏色有乙個編號,求樹中每個子樹的最多的顏色編號的和。dsu on tree簡介 在o n 2 的暴力做法中,我們用cnt記錄每種顏色出現的次數,對於每個結點,遍歷這棵子樹上的所...

dsu on tree 樹上啟發式合併

樹上啟發式合併 用於處理離線查詢的子樹問題 第一次先求出重兒子 第二次dfs的過程中,先計算輕兒子,貢獻不保留,再計算重兒子,貢獻保留 最後再加上輕兒子的貢獻,計算出當前節點的值 複雜度為o nlogn 每個節點都有乙個顏色編號 計算一棵以1為根的樹的以每個節點為根的子樹中顏色最多的顏色編號和 這題...

dsu on tree 樹上啟發式合併

對於一顆靜態樹,o nlogn 時間內處理子樹的統計問題。是一種優雅的暴力。很顯然,樸素做法下,對於每顆子樹對其進行統計的時間複雜度是平方級別的。考慮對樹進行乙個重鏈剖分。雖然都基於重鏈剖分,但不同於樹剖,我們維護的不是樹鏈。對於每個節點,我們先處理其輕兒子所在子樹,輕子樹在處理完後消除其影響。然後...