這道題目很關鍵的一點就是,要明白用的餐巾和洗的餐巾是兩個系統。
所以我們把每一天所用餐巾直接用乙個源點和匯點連線。解決第乙個系統。
此時可能會洗餐巾,所以我們另起乙個點,從源點每一天引出髒的餐巾,數目依然是當天所用的餐巾數量,然後從這個點連線到m天後的第一系統的點和n天後第一系統的點,費用分別為f和s,流量為無窮大。當天的餐巾就算不洗也可以留下來,所以我們還需要把這些餐巾連線起來,當天不洗的餐巾連一條線到下一天不洗的餐巾處,流量為無窮大,費用為0.第二個系統就是輔助第乙個系統的。
**如下:
#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
const int inf = 0x3f3f3f3f;
const int maxn = 2500 + 5;
const int maxm = 10000 + 5;
int n;
int head[maxn], to[maxm], front[maxm], flow[maxm], cost[maxm], ppp;
int dis[maxn], minflow[maxn];
bool flag[maxn];
pairpar[maxn];
struct min_cost_max_flow
bool spfa(int s, int t) }}
} if(dis[t] == inf)
return 0;
return 1; }
int slove(int s, int t)
ans += dis[t] * minflow[t];
} return ans; }
void add_edge(int u, int v, int f, int c)
}mcmf;
int main()
int ans = mcmf.slove(start, tank);
printf("%d\n", ans);
return 0;
}
網路流24題 餐巾計畫
乙個餐廳在相繼的n天裡,第i天需要ri塊餐巾 i l,2,n 餐廳可以從三種途徑獲得餐巾。1 購買新的餐巾,每塊需p分 2 把用過的餐巾送到快洗部,洗一塊需m天,費用需f分 f p 如m l時,第一天送到快洗部的餐巾第二天就可以使用了,送慢洗的情況也如此。3 把餐巾送到慢洗部,洗一塊需n天 n m ...
網路流24題 餐巾計畫(費用流)
乙個餐廳在相繼的 n 天裡,每天需用的餐巾數不盡相同。假設第 i天需要 ri 塊餐巾。餐廳可以購買新的餐巾,每塊餐巾的費用為 p 分 或者把舊餐巾送到快洗部,洗一塊需 m 天,其費用為 f 分 或者送到慢洗部,洗一塊需 n 天,其費用為 s 分 s f 每天結束時,餐廳必須決定將多少塊髒的餐巾送到快...
網路流24題 餐巾計畫問題
傳送門 這個題我一開始沒把tot賦值成 1,然後調了1h。然後只拿了20,看了題解才知道漏了一種情況,那就是其實餐巾是可以留到第二天的。然後就沒了。對了,忘說做法了 尷尬 其實就是拆點,分別連邊,實現題目中的三種操作,具體可以看我的 include include include include i...