網路流與線性規劃24題 之 餐巾計畫問題

2022-05-04 18:27:09 字數 1441 閱讀 6834

演算法實現題8-10 餐巾計畫問題(習題8-21)

«問題描述:

乙個餐廳在相繼的n 天裡,每天需用的餐巾數不盡相同。假設第i天需要ri塊餐巾(i=1,

2,…,n)。餐廳可以購買新的餐巾,每塊餐巾的費用為p分;或者把舊餐巾送到快洗部,

洗一塊需m天,其費用為f 分;或者送到慢洗部,洗一塊需n 天(n>m),其費用為s«程式設計任務:

程式設計找出乙個最佳餐巾使用計畫.

«資料輸入:

由檔案input.txt提供輸入資料。檔案第1 行有6 個正整數n,p,m,f,n,s。n 是要安排餐巾

使用計畫的天數;p 是每塊新餐巾的費用;m 是快洗部洗一塊餐巾需用天數;f 是快洗部洗

一塊餐巾需要的費用;n是慢洗部洗一塊餐巾需用天數;s是慢洗部洗一塊餐巾需要的費用。

接下來的n 行是餐廳在相繼的n 天裡,每天需用的餐巾數。

«結果輸出:

程式執行結束時,將餐廳在相繼的n 天裡使用餐巾的最小總花費輸出到檔案output.txt

中。輸入檔案示例 輸出檔案示例

input.txt

3 10 2 3 3 256

7output.txt

145【建模方法】

經典構圖題。將每一天拆成兩個點i, i』,加如下6條邊:

(s, i, ri, p)——在第i天可以買至多ri個餐巾,每塊p分;

(i, t, ri, 0)——第i天要用ri塊餐巾;

(s, i』, ri, 0)——第i天用剩的ri塊舊餐巾;

(i』, i+m, ∞, f)——第i天的舊餐巾送到快洗部,每塊f分;

(i』, i+n, ∞, s)——第i天的舊餐巾送到慢洗部,每塊s分;

(i』, i』+1, ∞, 0)——第i天的舊餐巾可以留到第i+1天再處理;

求一次最小費用流即為結果。(引自《網路流建模彙總》by edelweiss)

code如下:

#include#include#include#define inf 0x3f3f3f3f

using namespace std;

int n,p,m,f,n,s,s,t,ecnt,ans,first[2100],nxt[1000100];

struct edgee[1000100];

bool vis[2100];

int d[2100],q[2100];

void link(int a,int b,int w,int c)

bool spfa()

}vis[now]=false;

}return d[s]^inf;

}int dfs(int x,int f)

return used;

}void zkw()

}}int main()

zkw();

printf("%d\n",ans);

return 0;

}

線性規劃與網路流24 餐巾計畫問題

題目鏈結點這裡 犯了個智障錯誤,找錯找了一上午,最小費用問題,建模對於我這種菜雞有點難想到。大概這樣建模 把第i天,分為2個點 xi和yi 1 從s向每個xi連一條容量為ri,費用為0的邊。2 從每個yi向t連一條容量為ri,費用為0的邊。3 從s向每個yi連一條容量為無窮大,費用為p的邊。4 從每...

線性規劃與網路流24題 17 運輸問題

description w公司有m個倉庫和n 個零售商店。第i 個倉庫有ai個單位的貨物 第j個零售商店需要bj個單位的貨物。貨物供需平衡,即sigma ai sigma bj 從第i個倉庫運送每單位貨物到第j個零售商店的費用為cij。試設計乙個將倉庫中所有貨物運送到零售商店的運輸方案,使總運輸費用...

線性規劃與網路流24題 4 魔術球

線性規劃與網路流24題 4 魔術球 description 假設有n根柱子,現要按下述規則在這n根柱子中依次放入編號為 1,2,3,的球。1 每次只能在某根柱子的最上面放球。2 在同一根柱子中,任何2個相鄰球的編號之和為完全平方數。試設計乙個演算法,計算出在n根柱子上最多能放多少個球。例如,在4 根...