CTSC1999 網路流24題 補丁VS錯誤

2022-05-19 09:55:30 字數 930 閱讀 4164

題目:洛谷p2761、vijos p1019、codevs1239、codevs2218。

題目大意:有n個錯誤,m個不同的補丁。

對於乙個補丁,有兩個不同的字串描述。具體如下:

如果當前錯誤包含第乙個字串中「+」的所有錯誤,且不包含第乙個字串中「-」的所有錯誤,則可以用這個補丁。

使用這個補丁將修復第二個字串中「-」的所有錯誤,但會增加第二個字串中「+」的錯誤。

使用每個補丁都要耗費一定的時間。

現在這些錯誤都有,每個補丁可以重複安裝,問你最短要多長時間能修復所有錯誤,如果無法完成,輸出0。

解題思路:並沒有看出來要用什麼網路流。

首先最多20個錯誤,用32位整數的每一位儲存一種錯誤,完全沒有問題。

然後,可以發現本題是乙個最短路問題,要從最初有全部錯誤的狀態轉移到最終無錯誤的狀態,其中有很多狀態,且有很多連邊。

但是狀態數太多,沒法儲存邊怎麼辦?

直接在spfa/dijkstra裡列舉要用的補丁即可。

到0的最短路長度即為答案。

如果發現無答案,則輸出0。

c++ code:

#include#include#includeint n,m,dis[1<<21];

bool vis[1<<21];

struct buding

}e[125];

char b[30],f[30];

std::queueq;

int main()

}} }

if(dis[0]==0x3f3f3f3f)puts("0");else

printf("%d\n",dis[0]);

return 0;

}

CTSC1999 網路流24題 家園

題目 洛谷p2754。題目大意 有 n 個空間站,m 個飛船,每個飛船有各自的停靠站點,並且從第乙個停靠站點開始,不斷迴圈。每個飛船有不同的容量 1為月球,0為地球 每個飛船初始停在第乙個停靠站上,每過1s就會到下乙個停靠站。在空間站上的人可以選擇上飛船,也可以選擇不上飛船。現在有 k 個人要從地球...

CTSC1999 網路流24題 星際轉移

由於人類對自然資源的消耗,人們意識到大約在2300 年之後,地球就不能再居住了。於是在月球上建立了新的綠地,以便在需要時移民。令人意想不到的是,2177 年冬由於未知的原因,地球環境發生了連鎖崩潰,人類必須在最短的時間內遷往月球。現有n個太空站 位於地球與月球之間,且有m 艘公共運輸太空船在其間來回...

CTSC1999 網路流24題 星際轉移

輸入檔案 home.in輸出檔案 home.out簡單對比 時間限制 1 s 記憶體限制 128 mb 由於人類對自然資源的消耗,人們意識到大約在2300 年之後,地球就不能再居住了。於是在月球上建立了新的綠地,以便在需要時移民。令人意想不到的是,2177 年冬由於未 知的原因,地球環境發生了連鎖崩...