乙個餐廳在相繼的n天裡,第i天需要ri塊餐巾(i=l,2,…,n)。餐廳可以從三種途徑獲得餐巾。
(1)購買新的餐巾,每塊需p分;
(2)把用過的餐巾送到快洗部,洗一塊需m天,費用需f分(f<p)。如m=l時,第一天送到快洗部的餐巾第二天就可以使用了,送慢洗的情況也如此。
(3)把餐巾送到慢洗部,洗一塊需n天(n>m),費用需s分(s<f)。
在每天結束時,餐廳必須決定多少塊用過的餐巾送到快洗部,多少塊送慢洗部。在每天開始時,餐廳必須決定是否購買新餐巾及多少,使洗好的和新購的餐巾之和滿足當天的需求量ri,並使n天總的費用最小
輸入格式:
輸入檔案共3行,第1行為總天數;第2行為每天所需的餐巾塊數;第3行為每塊餐巾的新購費用p,快洗所需天數m,快洗所需費用f,慢洗所需天數n,慢洗所需費用s。
輸出格式:
輸出檔案共1行為最小的費用。
這道題比起數字梯形要難上不少。。在方格取數里我們學到了把乙個點拆成2個點,兩個點之間連兩條邊乙個限制費用次數,另外乙個正常走。
這道題中,我們匯點顯然連得是每天需求的盤子。但是中間怎麼弄呢。。
把乙個點拆成兩個點後,我們來考慮,源點和匯點分別連入還是出(例如最小路徑覆蓋中源點連出)
在這題中,源點如果連入點(一天的開始),那麼一天的結束連匯點。可是結束之後我還要去洗盤子啊。。
怎麼辦?似乎沒法辦。
我們把一天的結束連到匯點,一天的開始連到源點。那麼流入源點的東西是什麼呢?顯然還是那些需求的盤子(等等我寫到這的時候突然感覺,需求的盤子明明就是應該由一天的結束來決定的啊,所以應該流入匯點)。
那麼從源點流入結束的是什麼,還是那些盤子,不過是已經用過需要洗的。
所以結束可以向開始連邊,就是洗盤子~費用就是洗盤子的費用,容量是inf(因為最大流是根據流出即使用的盤子來決定的)。
。。那麼問題來了,這樣的話盤子不夠(達不到滿流)怎麼辦(需要買盤子):直接由s連入一天開始,費用是買盤子,可以買inf個。
好的交上去,wa了8個點。。。為什麼。
我們來找一下邏輯的漏洞。一天結束洗好的盤子流入了另一天的新盤子中,看似沒什麼問題啊。。但是,如果那一天所需的盤子小於洗好的盤子的,剩下的盤子怎麼辦。。還要流入別的地方呀。。所以,我們把這一天的盤子留到明天洗,向下一天連一條容量為inf,費用為0的邊。(為什麼不會先走這個?因為先走這個顯然不能達成最大流)。
所以這道題就結束辣。
#include
using
namespace
std;
#define ll long long
const ll inf=1e9;
const
int maxn=2e5+5;
const
int base=1e5;
struct edgee[maxn<<1];
int cnt=1,head[maxn];
inline
void add(ll u,ll v,ll w,ll cost),head[u]=cnt;}
ll dis[maxn],pre[maxn];
bool vis[maxn];
queue
q;ll n,p,s,t;
ll dayfast,flowfast,dayslow,flowslow;
bool spfa(int x)}}
}}
if(dis[t]==inf)return
0; return
1;
}ll mf()
for(int i=pre[t];i;i=pre[e[i].u])
}return cost;
}int main()
scanf("%lld%lld%lld%lld%lld",&p,&dayfast,&flowfast,&dayslow,&flowslow);
for(int i=1;i<=n;i++)
printf("%lld\n",mf());
return
0;}
餐巾計畫問題
乙個餐廳在相繼的n 天裡,每天需用的餐巾數不盡相同。假設第i天需要ri塊餐巾 i 1,2,n 餐廳可以購買新的餐巾,每塊餐巾的費用 為p分 或者把舊餐巾送到快洗部,洗一塊需 m天,其費用為 f 分 或者送到慢洗部,洗一塊需 n 天 n m 其費用為 s這道題是一道最小費用最大流的題目,然而有一些神犇...
餐巾計畫問題
餐巾計畫問題 time limit 1000 ms memory limit 65536 kb description 乙個餐廳在相繼的n 天裡,每天需用的餐巾數不盡相同。假設第i天需要ri塊餐巾 i 1,2,n 餐廳可以購買新的餐巾,每塊餐巾的費用為p分 或者把舊餐巾送到快洗部,洗一塊需m天,其費...
題解 餐巾計畫問題
傳送門 乙個餐廳在相繼的 nnn 天裡,每天需用的餐巾數不盡相同。假設第 iii 天需要 rir iri 塊餐巾 i 1,2,n 餐廳可以購買新的餐巾,每塊餐巾的費用為 ppp 分 或者把舊餐巾送到快洗部,洗一塊需 m 天,其費用為 f 分 或者送到慢洗部,洗一塊需 nnn 天 n mn mn m ...