DTOJ 4744. deadline

題意

俗話說,deadline 是第一生產力,對於小 U 也是如此。之前忙碌的數學集訓和考試讓他無暇顧及OI,幾天前他才接到了出題任務:給聯考出題。
“我一個 MOer,怎麼來給聯考出題了呢?” 他感嘆道。

小 U 一共有 nn 個出題任務,其中某些出題任務的類型是不一樣的。比如想 idea 屬於腦力型勞動,寫 std 屬於體力型勞動。我們用 tit_i 表示第 ii 個任務的類型,其中 ti=0t_i = 0 表示腦力型勞動,ti=1t_i = 1 表示體力型勞動。

小 U 決定把數學集訓完畢的時間到比賽開始的時間分成 mm 個部分,而每一部分時間小 U 只能完成恰好一個出題任務。若數對 (u,v)(u, v) 滿足:在第 vv 部分時間他可以做第 uu 個任務,那麼則稱數對 (u,v)(u, v) 是合適的 。小 U 有 kk 個合適的數對 (ui,vi)(1ik)(u_i, vi) (1 \le i \le k)

爲了肝 ddl,小 U 決定採取以下兩步策略:

  • (1)決定每一部分的時間是做體力型勞動還是腦力型勞動。
  • (2)在滿足 1 的要求之下,每一個部分的時間選取一個能夠做的任務 (要求任務類型與 (1) 中決定的類型相同) 完成。當然,如果沒有能夠做的任務,他只能在這一部分時間裏什麼都不做。

由於小 U 很擅長計算,但是他不擅長做選擇。所以他實行第 (2) 步策略時,總是可以在 (1) 的約束下找到一種策略使得最終被做完的出題任務數量最大。但是他實行第 (1) 步策略往往不是最優的,很可能是最劣的。

幸運的小 U 在實行第 (1) 步策略時沒有做出太差的決定,所以他最後把所有出題任務都幾乎做完了。但還是差一些任務沒有做完,怎麼辦呢?小 U 靈機一動,決定把這個題出在聯測裏:

假設小 U 第 (1) 步做出了最不利於第 (2) 步的決定,那麼他能夠做完幾個出題任務呢?

對於所有數據,1n20001m20001k50001 \le n \le 2000,1 \le m \le 2000,1 \le k \le 5000

數據編號 nn \le mm \le kk \le 特殊限制
1 22 22 22
2,3 1010 1010 100100
4,5 2020 1515 3030
6-8 20002000 20002000 50005000 特殊性質一
9-15 20002000 20002000 50005000 特殊性質二
16-25 20002000 20002000 50005000

特殊性質一:對於任意 1inti=01 \le i \le n ,t_i = 0

特殊性質二:每一部分時間都有恰好兩種可以完成的任務,並且這兩種任務類型不同

題解

對於特殊性質二,把任務按種類看作二分圖,每個時間向對應的兩個任務連邊,要求的就是最小點覆蓋。
由此考慮擴展到一般情況,就是要確定每個時間連向的種類,使得最小點覆蓋最小。由於邊不確定不好直接求最小點覆蓋,而要求的是最小值,聯想到最小割,考慮把覆蓋一個點看作一個1的割。這樣,把每個時間段拆點,起點向終點連1的邊(構造一個1的割),把0和1的任務分別和S、T連邊,這樣可以把時間段歸到哪邊看作這個時間段選了哪個種類。由於每條邊的兩個端點至少要選一個(即至少有一個點產生割),於是把每個時間的起點、終點分別和0,1的任務連inf的邊,這樣可以保證每條邊的兩個點至少有一個產生割,對整張圖求最小割即可。

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