幾類網絡流的建模

1

區間 kk 覆蓋問題
有一些區間,選擇一個區間會產生一些收益。要去每個點覆蓋它的區間最多不超過 kk 個。

一開始的想法是源點連每個區間代表的點,區間代表的點連向序列裏的每個數,每個數連向匯點。發現這樣無法限制題目要求,因爲選擇一個區間實際上對應很多邊流量同時+1,網絡流並不能處理這種情況,這是典型的“一對多”問題。

嘗試更改建圖策略,對於一個區間 [l,r][l,r],我們連邊 lr+1l\rightarrow r+1,流量 11,費用 kkiii+1i+1 連流量 INF 費用 0 的邊。求 1 到 nn 流量爲 kk 的最大費用流。實際上是用了 iii+1i+1 這條邊代表了 ii 這個數,流一條有費用的邊代表選擇這個區間。

證明:首先,這樣跑出來的方案都是合法的,即不存在一個點被超過 kk 個區間覆蓋。然後,每一種合法方案都能被表示成至多 kk 組不相交的區間。

2

志願者招募
nn 天需要志願者,第 ii 天需要 aia_i 名。共有 mm 種志願者,第 ii 種志願者可以工作第 sis_itit_i 天,每個人花費 cic_i 元。求最小費用,滿足每一天的需求。

這是典型的“一對多”問題。我們嘗試用 1 的流量去覆蓋 sis_itit_i 天。類似上一題,源點連 1,流 INF 費 0,iii+1i+1 連流 INF-ai 費 0,nn 連匯點流 INF 費 0,sis_iti+1t_i+1 連流 INF 費 cic_i。流一條sis_iti+1t_i+1 的邊相當於僱傭了一種這樣的人,INF-ai 的邊限制了跨國這一天的流量至少爲 aia_i

上面兩個問題的共性是“一對多”,解決方法是把一些東西“串成串”,用 1 的流量覆蓋一段區間。

3

養貓
你養了一隻貓,爲了讓它快樂地成長,你需要合理地安排它每天的作息時間。假設一天分爲 n 個時刻,貓在每個時刻要麼是喫東西,要麼是睡覺。在第 i 個時刻,假如貓是去喫東西,那麼它能獲得愉悅值 eie_i,假如是去睡覺,那麼能獲得的愉悅值爲 sis_i
貓要成長,不僅僅需要快樂,還需要健康的作息。經過研究,對於每一個連續的長度爲 k k 的作息區間,即所有的時刻區間 [i,i+k1],1ink+1[i, i + k - 1], 1 \leq i \leq n-k+1,貓都要至少有 ms\text{ms} 的時刻用來睡覺,me\text{me} 的時刻用來喫東西,這樣貓才能健康成長。

現在你想合理地安排一天中的這 nn 個時刻,使得貓在能健康成長的前提下,獲得儘量多的愉悅值。

注意到:給定一個序列,求是否每個長度爲 k 的子區間的和都大於某個 M,等價於對於每個數 a_i,把 ai,...,ai+k1a_i,...,a_{i+k-1} 同時加上 aia_i,最後看是否每個數都大於 M。

顯然的想法是先每天都睡覺,然後把某些天改成喫東西。根據上面說的,如果我們改了某一天就把它後面的 k 天+1,那麼限制等價於操作完後每一天+1的數量在一個區間裏。

我們把天串一串,i向i+k連流量1費用e-s,表示把這一天改爲喫東西,覆蓋後面k天。i向i+1連k-ms-me,源點連向1流量k-s費用0,n向匯點流量k-s費用0.

在外面跨過 i,i+1 的邊的數量就是+了多少1.它的上界由總流量限制,下界由 i,i+1 的流量限制。


4

切糕
n×mn\times m 的棋盤,每個位置設置一個高度 0<hi,jR0<h_{i,j}\leq R,代價爲 costi,j,hi,jcost_{i,j,h_{i,j}}。要求滿足每對邊相鄰的格子高度差的絕對值小於等於一個常數。求最小代價。

這道題建模比較新穎。每個格子只能選擇一個高度,因此我們把每個高度建一個點,串一串,割掉 iii+1i+1 的邊表示選擇 ii 這個高度。問題轉化成了最小割。考慮相鄰高度差的限制,如圖:在這裏插入圖片描述
每個高度 hh 向周圍 hDh-D 連 INF,這樣如果割掉了綠邊,那麼紅邊及下面的邊是不能選的。

這類問題可以看作有一些變量,每個變量有一些選擇。可以把選擇與割對應起來,轉化成最小割問題。


5

文理分科
班級是一個 n×mn\times m 的網格圖,每個人選文有一定收益,選理有一定收益,一個人和周圍的四個人同時選文有一定收益,同時選理有一定收益,求最大收益。

這類題稱作“二元關係網絡流”,如圖:
在這裏插入圖片描述

感覺講的聽清楚。待補。

5

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

6

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

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