換根dp的通法:1.第一次掃描時,任選一個點為根,在“有根樹”上執行一次樹形DP,也就在回溯時發生的,自底向上的狀態轉移。 2.第二次掃描時,從剛才選出的根出發,對整棵樹執行一次dfs,在每次遞歸前進行自上向下的推導,計算出換根后的解。 例題POJ3585 Accumulation ...
傳送門 題意 給一顆樹,指定一個點,從這個點開始染色,每次只能在已染色點旁邊染色,問從每個點開始染色分別能產生多少種染色序列。 題解 這個問題其實就是問一顆有根樹的拓撲序列個數。 其實我們知道不是樹的有向無環圖的拓撲序列個數是個np問題,但是樹的拓撲序列個數是一個可解的問題。 n 的全排列個數為 n ,來考慮有多少種非法情況,可以發現,對於每個子樹,它的根一定要在這顆子樹的排列的第一個,那么這個子 ...
2020-03-30 10:01 4 362 推薦指數:
換根dp的通法:1.第一次掃描時,任選一個點為根,在“有根樹”上執行一次樹形DP,也就在回溯時發生的,自底向上的狀態轉移。 2.第二次掃描時,從剛才選出的根出發,對整棵樹執行一次dfs,在每次遞歸前進行自上向下的推導,計算出換根后的解。 例題POJ3585 Accumulation ...
淺談換根DP 本篇隨筆淺談一下算法競賽中的換根DP。 換根DP概念 換根DP其實是樹形DP的一種延伸技巧或者說是方法。 它的使用范圍是,對樹上的每個點跑樹形DP。這樣的話,不用換根DP一點一點跑的復雜度就是\(O(n^2)\),必炸。那么換根DP應運而生。簡單來講,就是我們會通過推理 ...
今天打 \(Atcoder\) 時遇到了一道換根 \(DP\) ,發現自己不太會,學習了一下。 一般來說,這類題在做樹形 \(DP\) 時沒有固定的根,可以枚舉根然后做 \(N\) 次樹形 \(DP\) ,但復雜度是不太優的,於是有了換根 \(DP\),一般通過兩次對整棵樹的 \(dfs ...
寫在前面 昨天 ABC 的 F 題,結論推出來了,猜到是拉格朗日,奈何我只會板子,不會分析次數; 賽后知道正解后感覺大受震撼。我還是太 naive 了 /kk 前置知識 組合數學 拉格朗日插值法。 Description 原題地址 給你 \(n, m, k ...
比賽鏈接:https://atcoder.jp/contests/abc160/tasks AtCoder Beginner Contest 160 A - Coffee View Code B - Golden Coins ...
換根dp 一般來說,我們做題的樹都是默認 \(1\) 為根的。但是有些題目需要計算以每個節點為根時的內容。 朴素的暴力:以每個點 \(u\) 作為 \(root\) 暴力dfs下去,復雜度\(O(n^2)\); 正確的做法:換根dp,復雜度\(O(n)\)。 執行步驟 第一次掃描,先 ...
A - Three-Point Shot 題目大意 兩個球隊現在分數分別給出,問少的一方投入三分球之后是否能翻盤. 代碼 B - Orthogonality 題目大意 給定兩個向量,問兩者內積是否是0. 代碼 C - ABC Tournament 題目大意 \(2^n ...
D - Logical Expression 題目大意:給定\(n\)個字符串,每個都是AND或者OR.要求你構造\(n+1\)個值,記入\(\{x0,x1,x2,...xn\}\).每個值只能取\ ...