題意
俗話說,deadline 是第一生產力,對於小 U 也是如此。之前忙碌的數學集訓和考試讓他無暇顧及OI,幾天前他才接到了出題任務:給聯考出題。
“我一個 MOer,怎麼來給聯考出題了呢?” 他感嘆道。
小 U 一共有 個出題任務,其中某些出題任務的類型是不一樣的。比如想 idea 屬於腦力型勞動,寫 std 屬於體力型勞動。我們用 表示第 個任務的類型,其中 表示腦力型勞動, 表示體力型勞動。
小 U 決定把數學集訓完畢的時間到比賽開始的時間分成 個部分,而每一部分時間小 U 只能完成恰好一個出題任務。若數對 滿足:在第 部分時間他可以做第 個任務,那麼則稱數對 是合適的 。小 U 有 個合適的數對 。
爲了肝 ddl,小 U 決定採取以下兩步策略:
- (1)決定每一部分的時間是做體力型勞動還是腦力型勞動。
- (2)在滿足 1 的要求之下,每一個部分的時間選取一個能夠做的任務 (要求任務類型與 (1) 中決定的類型相同) 完成。當然,如果沒有能夠做的任務,他只能在這一部分時間裏什麼都不做。
由於小 U 很擅長計算,但是他不擅長做選擇。所以他實行第 (2) 步策略時,總是可以在 (1) 的約束下找到一種策略使得最終被做完的出題任務數量最大。但是他實行第 (1) 步策略往往不是最優的,很可能是最劣的。
幸運的小 U 在實行第 (1) 步策略時沒有做出太差的決定,所以他最後把所有出題任務都幾乎做完了。但還是差一些任務沒有做完,怎麼辦呢?小 U 靈機一動,決定把這個題出在聯測裏:
假設小 U 第 (1) 步做出了最不利於第 (2) 步的決定,那麼他能夠做完幾個出題任務呢?
對於所有數據,。
數據編號 | 特殊限制 | |||
---|---|---|---|---|
1 | 無 | |||
2,3 | 無 | |||
4,5 | 無 | |||
6-8 | 特殊性質一 | |||
9-15 | 特殊性質二 | |||
16-25 | 無 |
特殊性質一:對於任意 。
特殊性質二:每一部分時間都有恰好兩種可以完成的任務,並且這兩種任務類型不同
題解
對於特殊性質二,把任務按種類看作二分圖,每個時間向對應的兩個任務連邊,要求的就是最小點覆蓋。
由此考慮擴展到一般情況,就是要確定每個時間連向的種類,使得最小點覆蓋最小。由於邊不確定不好直接求最小點覆蓋,而要求的是最小值,聯想到最小割,考慮把覆蓋一個點看作一個1的割。這樣,把每個時間段拆點,起點向終點連1的邊(構造一個1的割),把0和1的任務分別和S、T連邊,這樣可以把時間段歸到哪邊看作這個時間段選了哪個種類。由於每條邊的兩個端點至少要選一個(即至少有一個點產生割),於是把每個時間的起點、終點分別和0,1的任務連inf的邊,這樣可以保證每條邊的兩個點至少有一個產生割,對整張圖求最小割即可。