九省聯考 2018 IIIDX

題意

給定一棵樹,保證相同深度的點連續,你需要給每個點在 $v_i$ 中選取一個作爲該點權值,且父親的權值小於該點。

你需要最大化序列的字典序。

$1\leq n\leq 5\times 10^5$ 。

題解

本題解從二分圖匹配的角度解決了該問題,並說明了貪心的正確性(

根據題目可以想到一個比較 $\text{trival}$ 的貪心,每次先將最右子樹遍歷以保證最左兒子的權值最大。

然後你就獲得了 $60$ 分的成績,打開一看僅過掉了 $v_i$ 互不相同的情況。

考慮這個算法的正確性,我們僅保證了最優化最左兒子的代價,但是 $=$ 的性質可以對於右兒子進行調整,但是貪心無法做到。

而對於 $v_i$ 互不相同的情況,由於不會出現 $=$ ,那麼顯然是正確的。

那麼我們只能枚舉當前位置判斷是否後面存在解,一直最優化此過程得到的一定是字典序最大的。

現在的問題變成了:如何判斷是否存在一種方案給未給定點定權值滿足題意?

稍微轉化題意:我們當前可以得到一些限制:必須選擇 $a_i$ 個 $\geq b_i$ 的,需要滿足所有的限制。爲了方便將其限制寫成 $(a_i,b_i)$

這是一個簡單的貪心,按照 $a_i$ 排序從小到大依次從左面開始選擇。但是並沒有顯式的得到更優秀的判斷條件。

考慮建二分圖,左側代表未匹配結點 $\sum a_i$ 個,右側代表還未選擇的 $v$ 。

那麼對於限制 $(a_i,b_i)$ ,只需要將左側 $a_i$ 個連向 $b_i$ 的後綴。判斷條件爲是否該圖存在完美匹配。

考慮 $\text{Hall}$ 定理,我們將所有限制按 $b_i$ 排序,可以發現只要判斷後綴,即對於 $\forall i,S=[i,i+1,...]$ ,$|S|\leq |N(S)|$ 。

即 $\forall i,\sum_{j=i} a_j \leq W_{b_i}$ ,$W_{b_i}$ 表示 $b_i$ 後面未匹配點的個數 。

移項可得 $W_{b_i}-\sum_{j=i} a_j\geq 0$ ,那麼我們僅需要判斷是否對於每個後綴剩餘的位置都需要 $\geq 0$ 。

那麼我們只需要維護每個位置的 $W-\sum_{在他位置之後的} a$ 是否均 $\geq 0$ ,由於 $\text{Hall}$ 定理,這個條件是充要的。

故每次到一個需要判斷的點撤銷之前父親的操作在新加入一個操作,判斷序列的最小值是否 $\geq 0$ 。

整個過程僅需要一個數據結構支持查詢最小值,區間加,線段樹維護即可。

判斷是否加入可以線段樹二分,故整體的時間複雜度爲 $\mathcal O(n\log n)$ 。

https://loj.ac/s/1083508

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章