1. 程式人生 > >樹鏈剖分[模板](洛谷 P3384)

樹鏈剖分[模板](洛谷 P3384)

www. lca 葉子 class logs 如果 葉子節點 ref 它的

洛谷·[模板]樹鏈剖分

寫在前面

首先,在學樹鏈剖分之前最好先把 LCA、樹形DP、DFS序 這三個知識點學了

如果這三個知識點沒掌握好的話,樹鏈剖分難以理解也是當然的。


樹鏈剖分

樹鏈剖分 就是對一棵樹分成幾條鏈,把樹形變為線性,減少處理難度

  • 概念

  • dfs1()

  • dfs2()

  • 對剖過後的樹建線段樹

  • 處理問題

概念

  • 重兒子:對於每一個非葉子節點,它的兒子中 兒子數量最多的那一個兒子 為該節點的重兒子
  • 輕兒子:對於每一個非葉子節點,它的兒子中 非重兒子 的剩下所有兒子即為輕兒子
  • 葉子節點沒有重兒子也沒有輕兒子(因為它沒有兒子。。)
  • 重邊:連接任意兩個重兒子的邊叫做重邊
  • 輕邊:剩下的即為輕邊
  • 重鏈:連接

樹鏈剖分[模板](洛谷 P3384)