這建圖太厲害了,我想了巨久都沒想到怎麼控制流量先合法又能流到別的地方去。
還是思維太爛了qaq
用了乙個把流量拆開的思路,就叫ta拆流吧
具體的說,我們對乙個點,有乙個流量一定要流,但是這個流量也可以給後面的用,我們就把這個流拆開。
對應此題,先把點拆成\(i\)和\(i+n\),然後\(i\)連線\(t\)表示流量限制,費用為\(0\),要流滿,這也是整個圖唯一連線\(t\)的邊。
然後\(i+n\)表示當天用完的這個髒餐巾的流,這個流可以給下一天的髒餐巾,可以送去快洗慢洗再給對應的\(j\)號點代表\(j\)得到流
然後建一下買餐巾的流就可以了
code:
#include #include #include #include #include using std::min;
#define ll long long
template void read(t &x)
const int n=4010;
const int m=1e5;
const int inf=0x3f3f3f3f;;
int head[n],to[m],next[m],edge[m],cost[m],cnt=1;
void add(int u,int v,int w,int c)
int n,need[n],s,t;
int used[n],dis[n],pre[n];
bool spfa()
} return dis[t]2019.2.26
網路流24題 餐巾計畫問題 題解
題目傳送門 題目大意 第 i ii 天你需要 a ia i ai 塊餐巾,可以選擇買新的或用之前洗好的,每天用完的髒餐巾可以選擇快洗或慢洗,洗完後可以繼續用,要求費用最小。考慮將每一天拆成兩個點,那麼就得到了兩列點,源點向左邊的點連邊,流量為 a ia i ai 費用為 0 00,表示第 i ii ...
網路流24題 餐巾計畫問題
傳送門 這個題我一開始沒把tot賦值成 1,然後調了1h。然後只拿了20,看了題解才知道漏了一種情況,那就是其實餐巾是可以留到第二天的。然後就沒了。對了,忘說做法了 尷尬 其實就是拆點,分別連邊,實現題目中的三種操作,具體可以看我的 include include include include i...
網路流24題餐巾計畫問題
乙個餐廳在相繼的 n n 天裡,每天需用的餐巾數不盡相同。假設第 i role presentation i i天需要 ri r i塊餐巾 i 1,2,n 餐廳可以購買新的餐巾,每塊餐巾的費用為 p p 分 或者把舊餐巾送到快洗部,洗一塊需 m 天,其費用為 f 分 或者送到慢洗部,洗一塊需 n r...