CF1404B. Tree Tag

辜铜星發表於2024-11-23

1405D - 樹標記

讓我們獨立地考慮幾個情況。

情況1:$ \text{dist}(a, b) \leq da $

不出所料,在這種情況下,Alice 在第一步就透過標記 Bob 獲勝。

情況2:$ 2da \geq \text{樹的直徑} $

在這裡,樹的直徑被定義為最長簡單路徑的長度。

在這種情況下,Alice 可以移動到樹的中心。一旦 Alice 在那裡,無論 Bob 在哪裡,Alice 都可以在樹中只用一步到達任何頂點,從而贏得比賽。

情況3:$ db > 2da $

在這種情況下,讓我們描述一個 Bob 獲勝的策略。因為我們不在情況1中,Bob 在他的第一步之前不會輸掉比賽。那麼,足以證明 Bob 總是可以在與 Alice 的距離大於 $ da $ 的情況下結束他的回合。

由於我們不在情況2中,至少有一個與 Alice 距離至少為 $ da $ 的頂點。如果 Bob 在他回合開始時位於這樣的頂點,他應該簡單地留在那裡。否則,有某個頂點 $ v $ 滿足 $ \text{dist}(a, v) = da + 1 $。那麼 $ \text{dist}(b, v) \leq \text{dist}(b, a) + \text{dist}(a, v) \leq da + (da + 1) = 2da + 1 \leq db $,所以 Bob 可以在他的回合中跳到 $ v $。

情況4:$ db \leq 2da $

在這種情況下,Alice 的策略將是儘可能捕捉 Bob 或者移動一個頂點以靠近 Bob。讓我們證明 Alice 將在有限的移動次數內獲勝。

讓我們將樹的根設為 $ a $。Bob 位於 $ a $ 的某個子樹中,假設有 $ k $ 個頂點。Alice 每次移動一個頂點,減少 Bob 的子樹大小至少一個頂點。由於 $ db \leq 2da $,Bob 不能移動到另一個子樹而不被立即捕獲,所以 Bob 必須留在這個不斷縮小的子樹中,直到他不可避免地被擊敗。

解決方案

實現中唯一非平凡的部分是檢查情況1和2。情況1 只需透過 DFS 檢查。情況2 只需計算樹的直徑,這是一個標準問題。

複雜度是 $ O(n) $。

相關文章