1
區間 覆蓋問題
有一些區間,選擇一個區間會產生一些收益。要去每個點覆蓋它的區間最多不超過 個。
一開始的想法是源點連每個區間代表的點,區間代表的點連向序列裏的每個數,每個數連向匯點。發現這樣無法限制題目要求,因爲選擇一個區間實際上對應很多邊流量同時+1,網絡流並不能處理這種情況,這是典型的“一對多”問題。
嘗試更改建圖策略,對於一個區間 ,我們連邊 ,流量 ,費用 , 向 連流量 INF 費用 0 的邊。求 1 到 流量爲 的最大費用流。實際上是用了 到 這條邊代表了 這個數,流一條有費用的邊代表選擇這個區間。
證明:首先,這樣跑出來的方案都是合法的,即不存在一個點被超過 個區間覆蓋。然後,每一種合法方案都能被表示成至多 組不相交的區間。
2
志願者招募
有 天需要志願者,第 天需要 名。共有 種志願者,第 種志願者可以工作第 到 天,每個人花費 元。求最小費用,滿足每一天的需求。
這是典型的“一對多”問題。我們嘗試用 1 的流量去覆蓋 到 天。類似上一題,源點連 1,流 INF 費 0, 向 連流 INF-ai 費 0, 連匯點流 INF 費 0, 向 連流 INF 費 。流一條 向 的邊相當於僱傭了一種這樣的人,INF-ai 的邊限制了跨國這一天的流量至少爲 。
上面兩個問題的共性是“一對多”,解決方法是把一些東西“串成串”,用 1 的流量覆蓋一段區間。
3
養貓
你養了一隻貓,爲了讓它快樂地成長,你需要合理地安排它每天的作息時間。假設一天分爲 n 個時刻,貓在每個時刻要麼是喫東西,要麼是睡覺。在第 i 個時刻,假如貓是去喫東西,那麼它能獲得愉悅值 ,假如是去睡覺,那麼能獲得的愉悅值爲 。
貓要成長,不僅僅需要快樂,還需要健康的作息。經過研究,對於每一個連續的長度爲 k k 的作息區間,即所有的時刻區間 ,貓都要至少有 的時刻用來睡覺, 的時刻用來喫東西,這樣貓才能健康成長。
現在你想合理地安排一天中的這 個時刻,使得貓在能健康成長的前提下,獲得儘量多的愉悅值。
注意到:給定一個序列,求是否每個長度爲 k 的子區間的和都大於某個 M,等價於對於每個數 a_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
切糕
的棋盤,每個位置設置一個高度 ,代價爲 。要求滿足每對邊相鄰的格子高度差的絕對值小於等於一個常數。求最小代價。
這道題建模比較新穎。每個格子只能選擇一個高度,因此我們把每個高度建一個點,串一串,割掉 向 的邊表示選擇 這個高度。問題轉化成了最小割。考慮相鄰高度差的限制,如圖:
每個高度 向周圍 連 INF,這樣如果割掉了綠邊,那麼紅邊及下面的邊是不能選的。
這類問題可以看作有一些變量,每個變量有一些選擇。可以把選擇與割對應起來,轉化成最小割問題。
5
文理分科
班級是一個 的網格圖,每個人選文有一定收益,選理有一定收益,一個人和周圍的四個人同時選文有一定收益,同時選理有一定收益,求最大收益。
這類題稱作“二元關係網絡流”,如圖:
感覺講的聽清楚。待補。
5
一棵樹 對點,每次可以花費 的代價給一條邊標記或者給一對點標記。滿足每對未標記點的路徑上的所有邊都被標記。
要麼點對被覆蓋,要麼之間所有邊被覆蓋。建二分圖,左邊是點對,右邊是邊,每個點對向它們之間所有的邊。求最小割即可。向樹上的一條路徑連邊,可以倍增或者樹剖優化。
6
給定一個由單位正方體組成的物體的俯視圖,求最多拿掉多少正方體使得三視圖不變。