很多演算法,比如樹鏈剖分,是在點權上進行計算和統計的。
詳解樹鏈剖分
但是有些題會比較狗,只給你邊權。
這時就要想辦法把邊權轉為點權。
以一棵樹為例。邊權轉點權一般是把邊權轉為深度較深的節點(也就是兒子節點)的點權。
這麼做很好理解,因為對於一棵樹來講,乙個點有很多個兒子(出邊),所以沒辦法把這些出邊的邊權都集中在乙個點上,但是乙個點只有一條入邊。所以我們選擇這種策略。
需要注意的是,在邊轉點之後,如樹鏈剖分之類的統計會出現變化。
顯而易見,邊轉點之後,每個點代表這個點本身和它的入邊這條路徑,所以在我們統計一條線段路徑的時候(從乙個點開始,到乙個點結尾),就不能同時包括其兩個端點(理由已經給出)。否則就會錯。
幸甚至哉,歌以詠志。
Poj3237 樹刨 線段樹 邊權轉點權
題意 在樹上操作,每次將兩點路徑值全變負和單點修改。每次求兩點間路徑的最大值。思路 邊權轉點權的話,每次把一條邊的兒子點作為該邊的權值。想起來挺好想,很容易出問題。查詢修改的話,要將多算的那條lca去掉就可以了。剩下的就是板子。總結 去掉lca,只需要判斷top x top y 時,x和y是否相等,...
Poj3237 樹刨 線段樹 邊權轉點權
題意 在樹上操作,每次將兩點路徑值全變負和單點修改。每次求兩點間路徑的最大值。思路 邊權轉點權的話,每次把一條邊的兒子點作為該邊的權值。想起來挺好想,很容易出問題。查詢修改的話,要將多算的那條lca去掉就可以了。剩下的就是板子。總結 去掉lca,只需要判斷top x top y 時,x和y是否相等,...
2023年ccpc威海(祖先的邊權和點權)
傳輸門 給出了 n個人和 m 條關係,每乙個團體的價值為當前團體的關係數 人數,如果這個團體的關係數小於等於人數那麼就是 0,也就相當於不選擇。可以使用並查集來考慮對於每個節點計算點數和邊數的關係,符合邊數 點數 0的就加上邊數 點數,最後求總和。pragma gcc optimize 1 prag...