Codeforces 2400+ flows 大雜燴

rlc202204發表於2024-07-21

CF903G Yet Another Maxflow Problem

2700

關鍵點:最大流轉最小割

顯然我們需要用其他方式維護最大流,考慮到最大流等於最小割,於是我們去求最小割。

考慮這個圖的特性不難發現左邊和右邊兩列都至多割掉一條邊,於是我們直接列舉割掉的位置,剩下的左邊字首和右邊字尾所有相連的邊都要割。

考慮維護,我們從小到大列舉左邊,於是答案由右邊確定,用線段樹維護,每次加入一條連線兩邊的邊就將右邊的一段字首加上這條邊的容量即可。

由於只會修改左邊,我們預處理完後再用線段樹維護左邊單點修改即可。

提交記錄

CF1082G Petya and Graph

2400

關鍵點:最大權閉合子圖

二分圖,左邊是邊,右邊是點,然後最大權閉合子圖即可。難度虛高,現在已經爛透了。

提交記錄

CF1263F Economic Difficulties

2400

關鍵點:閉合子圖,最小割,虛樹

首先這題相當於劃分兩個集合,虛樹大小之和最小,用虛樹經典結論 dfs 序排序後兩兩距離之和配合 dp \(O(n^2)\) 完事兒。有點套路。

但是網路流解法很神!

觀察性質:每條邊實際上管轄了一個 dfs 序區間,並且每個區間都是唯一的,如果不同樹上的兩個邊的區間有交集,那麼這兩條邊必須保留一個!!!

於是我們將必須保留一個的邊之間連邊,變成求二分圖最小點覆蓋。

如何證明求出的方案合法?考慮到這將是一個比較神奇的結構,管轄一個點的所有邊兩兩連邊,並且分別互相包含,這意味這我們可以調整使其全部再同一棵樹上被選中。

於是我們可以二分圖最小點覆蓋來求,時間複雜度 \(O(n^{2.5})\) 但是跑不滿。

第一種解法:提交記錄

CF277E Binary Tree on Plane

2400

關鍵點:二分圖匹配,費用流

沒啥意思,二分圖,如果 \(a\) 可以做 \(b\) 兒子就從左往右連邊,左邊容量為 1,右邊容量為 2 即可。

提交記錄

CF717G Underfail

2400

關鍵點:費用流,神仙建模

CF717G Underfail 題解

CF1198E Rectangle Painting 2

2500

關鍵點:性質,最小點覆蓋

首先觀察不難發現,每次取一行或一列肯定是最好的。

棋盤模型轉化後就成了最小點覆蓋,但是這題需要離散化,變成最小權點覆蓋,用網路流求解即可。

提交記錄

CF1070I Privatization of Roads in Berland

2400

關鍵點:分配資源,點邊轉二分圖

好題。不妨考慮一個點度數是 \(d_i\),同色鄰邊數是 \(a_i\),則我們要求 \(d_i - a_i \le k\),也就是 \(a_i \ge d_i - k\)

觀察發現同色邊最好是公共點,否則沒有意義。

不妨考慮重新思考這個問題:假設有若干資源,每條邊可以為兩邊的點之一提供一個資源,每個點有一個最少資源數,構造一種方案。

建立二分圖,左邊是點和需求,右邊是邊,跑一個最大流就可以求出來。不滿流直接無解,否則構造方案即可。

提交記錄

相關文章