http://www.lydsy.com/JudgeOnline/problem.php?id=1036php
https://oi.men.ci/tree-chain-split-notes/、ide
https://oi.men.ci/tree-divide-notes/優化
https://www.luogu.org/blog/chengni5673/dian-fen-zhi.net
對於一棵樹,統計長度爲 x 的路徑的路徑數.blog
點分治: 找到一個點爲根,統計答案,而後將它的子樹分離,分別進行一樣的操做,繼續,直到只剩下一個點. 其中選擇的根是有要求的,爲了保證時間複雜度,咱們須要儘可能的讓子樹的大小相近,因此每一次咱們選擇的根都最好是當前這棵樹的重心.ci
Graph 1. 求各點到指定點集的最短距離的優化方法get
(a)it
(b)class
Graph 2. 二分徹底圖建邊的優化方法技巧
Graph 3. 建邊的線段樹優化
分層圖就是有多維狀態的有邊長圖,比起正常的最短路轉移多了一種跨維度轉移的狀態轉移. 通常都是捨去某邊長度,最多舍多少次 (次數較少).
[JLOI2011] 飛行路線: Alice 和 Bob 如今要乘飛機旅行,他們選擇了一家相對便宜的航空公司。該航空公司一共在 n 個城市設有業務,設這些城市分別標記爲 0 到 n-1,一共有 m 種航線,每種航線鏈接兩個城市,而且航線有必定的價格。Alice 和 Bob 如今要從一個城市沿着航線到達另外一個城市,途中能夠進行起色。航空公司對他們此次旅行也推出優惠,他們能夠免費在最多 k 種航線上搭乘飛機。那麼 Alice 和 Bob 此次出行最少花費多少?
分層圖能夠很巧妙的解決這個問題. 想象你每次使用免費航線以前和以後分別存在於不一樣的時空 (不一樣的層) 裏面,每使用一次免費航線,你就從這個時空進入了另外一個時空 (免費). 根據以上思想建圖,一共建 k+1 層圖,相鄰的兩層圖中進行連邊 (單向邊,距離爲 1). 而後跑 Dijkstra 便可.