字典序最大,只需要貪心。
考慮用網路流來做這個題。
每次二分乙個答案,然後對當前操作和之前進行的操作與每個元素直接建邊,判斷是否存在完美匹配。
因為題中保證了乙個特殊性質,考慮通過霍爾定理優化。
點集 $x,y$ 存在完美匹配,僅當 $\forall z \in x,|match(z)|>=|z|$ 。
於是問題轉化為,加入當前這個點,考慮包含當前點的子集是否成立。
如何利用題中不相交的性質?
結論是,只需要考慮包含當前點的區間。
證明其實很簡單:
考慮三個點按左端點排序分別為為 $i,j,k$ ,其中當前加入的點為 $i$ 。
只需要證明不存在情況,使得 $|match(i) \cup match(k)|<|i|+|k|$ ,但 $|match(i) \cup match(j) \cup match(k)|>=|i|+|j|+|k|$
因為$i,j,k$的左端點是單調的,顯然右端點也是單調的。
那麼可以分兩種情況考慮,若 $match(i) \cap match(j) \ne \varnothing$ ,那麼加上 $j$ ,只會使不等關係的右側變大,所以原式成立。
若 $match(i) \cap match(j) = \varnothing$ ,那麼可以直接刪去$k$,因為 $|match(k)|>=|k|$ 是原來考慮過的內容。
所以只需要考慮區間的結論是正確的。
考慮乙個暴力做法,分別統計當前節點左側、右側的最劣情況,最終合併,這個複雜度是 $o(m^2)$。
發現可以通過字首和維護,問題轉化為區間最小值最大值,區間修改,線段樹可以解決。
鴿了。考慮首先跑出來由 $(0,0)$ 到每個關鍵點的左上角的點的最短路樹。
路徑是不跨過最短路樹的。
因為一次跨過去,對應一次跨回來,這段路程顯然是大於最短路徑的。
然後可以發現問題是乙個網格圖的最小環。
把每個點拆為四個點,分別表示當前在這個點的左上、右上、右下、左下來嘗試套圈。
對於最短路樹上的邊,不建立連邊關係。
通過最短路確定最小環即可。
省選模擬24
我是誰?鴿子王。t1 兩邊都拆點,用hall定理分析 詳細題解 t2 不會 t3 首先聯想到這道題 bzoj2965保護古蹟 想到能不能轉成對偶圖跑最小割 然後發現並不能做。但根據這個想到 對偶圖的最小割 平面圖的最短路 以下座標均指代交點 繼續推理容易發現只有乙個關鍵點的時候,顯然不會跨過 1,1...
省選模擬104 題解
a.簽到題 把每個點向它右側比他大的第乙個點之間連邊,如果沒有那麼向 root 連邊。那麼可以構成一棵樹。特判一些情況之後,可以認為問題就是 1.給某節點和它的所有兒子節點權值加上乙個值。2.詢問一條路徑的權值和。首先考慮如果只詢問單點的維護方法,其實就是打乙個標記表示給整個兒子集合都加上了若干權值...
省選模擬102 題解
a.island 對於正負不同的情況,o n 列舉左側的位置然後計算。對於正負性相同的情況,把笛卡爾樹建出來,然後每次考慮跨過最小值的貢獻。分幾種情況 左右均不超過最小值,左右僅有乙個超過最小值,左右都超過最小值。然後順便統計上其中乙個端點為劃分點的貢獻。然後瘋狂的寫式子拆式子就沒了。做法挺簡單的,...