圖論網絡流

1

給定一棵樹,每次可以選一個葉子刪掉。同時有 mm 個限制 (u,v)(u,v) 表示 uu 必須在 vv 之前刪掉。求可能最後一個被刪掉的點的集合。

如果有一個 uvu\rightarrow v 的限制,那麼以 vv 爲根 uu 的子樹都不能選。之後把不能選的點之間定向,加上限制的邊,如果有環就無解,否則可以證明解就是剩下的點。

2

給定一個字符串集合,求字符集大小爲 kk 且不包含任何一個集合中串的“雙向無限”字符串個數。如果有無限個輸出 -1。
k10100000k\leq 10,總串長\leq 100000

構建出字符串和字符集的 AC 自動機。判斷 inf:
1.某個 scc 不是簡單環;
2.某條路徑經過三個不同 scc。
否則,一條合法的路徑一定是從一個環出發,走一些路徑,再到一個環。

3

有一個 w×hw\times h0101 矩陣 AA,和一個 (w1)(h1)(w-1)*(h-1) 的矩陣 BB,滿足 Bi,j=Ai,j+Ai,j+1+Ai+1,j+Ai+1,j+1B_{i,j}=A_{i,j}+A_{i,j+1}+A_{i+1,j}+A_{i+1,j+1}
給你矩陣 BB,請給出一個滿足條件的矩陣 AA

添加輔助變量,每四個格子添加輔助變量表示哪些等於 00 ???

發現確定了第一行第一列和 A11A_{11} 之後,每個格子都可以由一坨 BB 元素和兩個 AA 元素(該行第一個和該列第一個)算出。然後就是 2-sat 模型了。

田字格限制問題一般想一想確定了哪些東西以後解就是固定的了。

4

一棵樹 mm 對點,每次可以花費 11 的代價給一條邊標記或者給一對點標記。滿足每對未標記點的路徑上的所有邊都被標記。
n,m10000n,m\leq 10000
要麼點對被覆蓋,要麼之間所有邊被覆蓋。建二分圖,左邊是點對,右邊是邊,每個點對向它們之間所有的邊。求最小割即可。向樹上的一條路徑連邊,可以倍增或者樹剖優化。

5

給定一個由單位正方體組成的物體的俯視圖,求最多拿掉多少正方體使得三視圖不變。
n,m<=100n,m<=100

首先滿足俯視圖。即俯視圖不爲零的都鋪上一層。

答案的上界顯然是每列最大值之和+每行最大值之和。什麼時候答案會減小?就是行行和列公用最大值的時候。因此建立二分圖,左邊是行,右邊是列,如果某行某列最大值相同並且這個格子可以放東西,就連流量 1 費用 最大值的邊。跑最大費用流即可。

進一步觀察發現權值相同的點纔會聯通,因此把權值相同的點拿出來跑最大流即可。

輸贏分配問題

區間 kk 覆蓋問題
有一些區間,選擇一個區間會產生一些收益。每個點覆蓋它的區間最多不超過 kk 個。
對於一個區間 [l,r][l,r],我們連邊 lr+1l\rightarrow r+1,流量 11,費用 kk。求流量爲 kk 的最大費用流

答案的上界顯然是不對移動進行限制的匹配。

考慮去調整匹配(變得合法)。如果匹配中士兵移動以後炸掉一個炮樓,然而不合法,那麼他不移動的時候一定也可以炸掉一個炮樓。我們對他的匹配進行調整,匹配數不變。
非常有趣的調整。證明了上界總是可以達到的。

這一類網絡流問題總是先去考慮答案的上界,然後用最小割/最大流來調整,或是直接證明了上界可以達到。

雜談

邊權小的時候用桶代替dij的堆。
k短路 可並堆

多sat(每個變量出現兩次,一正一反)。包含a的子句和-a的子句連無相邊 cf

完全圖最小生成樹:曼哈頓最小生成樹:把平面分成八個方向,向每個方向曼哈頓最近的點連邊。每個區域有兩條限制,比如x>=x0,(y-y0)-(x-x0)>=0,一維排序掃描線,另一維按區域維護x+y最小值即可。

編號gcd:只有向他的倍數的點的連邊纔有用。
xor:boruvka?

最小生成環套樹。直接kruskal。正確性:未選擇的邊一定不在答案內。

次小生成樹:枚舉非樹邊,刪掉路徑最大邊。

給定每個點的度數,構造滿足條件的圖或樹

1.要求沒有重邊:
每次選一個度最大的點,假設度數爲 kk,和度數前 kk 大的點連邊。

2.不要求:
充要條件是最大點度數小於等於總度數的一半並且總度數爲偶數。構造方法是每次選擇兩個度最大的點連邊。

3.不要求沒有重邊要求聯通。

樹:
合法當且僅當和爲 2n22n-2,且每個點至少是 11
使用 prufer 序列,先提出葉子,和度數最大的點連邊。維護兩個集合,一個是葉子一個是非葉子。

prufer 序列:找到編號最小的葉子刪掉,把鄰接點放到序列裏。直到剩兩個點。每個點出現次數是 d1d-1 次。

線性代數黑科技:
無向圖的 dfs 樹上給每個非樹邊分配一個隨機整數權值,樹邊權值等於覆蓋他的非樹邊權值的異或,一組邊集是割集當且僅當對應權值線性相關。
割集只刪掉這組邊以後聯通塊數量增加了。線性相關指存在一個子集異或爲 00
dzyloves chinese。

支配樹
DAG 上的做法較簡單,一個點的支配點就是入邊支配點的 Lca。

發佈了89 篇原創文章 · 獲贊 26 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章