餐巾計畫問題

2022-05-11 01:26:28 字數 2141 閱讀 3399

餐巾計畫問題

time limit: 1000 ms  memory limit: 65536 kb

description

乙個餐廳在相繼的n 天裡,每天需用的餐巾數不盡相同。假設第i天需要ri塊餐巾(i=1, 2,…,n)。餐廳可以購買新的餐巾,每塊餐巾的費用為p分;或者把舊餐巾送到快洗部, 洗一塊需m天,其費用為f 分;或者送到慢洗部,洗一塊需n 天(n>m),其費用為s< f 分。 每天結束時,餐廳必須決定將多少塊髒的餐巾送到快洗部,多少塊餐巾送到慢洗部,以及多 少塊儲存起來延期送洗。但是每天洗好的餐巾和購買的新餐巾數之和,要滿足當天的需求量。 試設計乙個演算法為餐廳合理地安排好n 天中餐巾使用計畫,使總的花費最小。 程式設計任務: 程式設計找出乙個最佳餐巾使用計畫.

input

由檔案input.txt提供輸入資料。檔案第1 行有6 個正整數n,p,m,f,n,s。n 是要安排餐巾 使用計畫的天數;p 是每塊新餐巾的費用;m 是快洗部洗一塊餐巾需用天數;f 是快洗部洗 一塊餐巾需要的費用;n是慢洗部洗一塊餐巾需用天數;s是慢洗部洗一塊餐巾需要的費用。 接下來的n 行是餐廳在相繼的n 天裡,每天需用的餐巾數。

output

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

樣例輸入:

3 10 2 3 3 2 5 6 7

樣例輸出:

145   

source

線性規劃與網路流24題

題解:

首先看到這道題的時候並沒有想到正解,但至少是乙個最小費用流。

一開始的思路是拆點,然後x和y之間連一條流量為a[i]費用為0的邊,x分別和y+d1和y+d2建邊,源點和匯點分別和x和y建邊。wa到不行。

沉思兩天之後終於想到了正解,把天數拆成x和y,y用來表示直接買的餐巾,x用來表示洗完之後的餐巾。因此只需要將x和y+d1和y+d2建邊就可以了,當然y和y+1也要建邊,因為洗完的餐巾是可以繼續傳下去的。最後就只要將源點和xy分別建邊,匯點和y建邊就可以了。

**如下:

#include#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

intn,m;

struct

node

edge[

400001

];int sze=1,head[5001

];long

long a[5001

];void putin(int

from,int to,long

long cap,long

long

cost)

void

in(int

from,int to,long

long cap,long

long

cost)

long

long ans,f[5001

];int pre[5001],vis[5001

];bool bfs(int src,int

des)

queue

mem;

mem.push(src);

f[src]=0;vis[i]=1

;

while(!mem.empty())}}

}if(f[des]==1e18)return0;

else

return1;

}void change(int src,int

des)

x=des;

while(x!=src)

}void mincostflow(int src,int

des)

intmain()

mincostflow(

0,n*2+1

); cout

}

餐巾計畫問題

乙個餐廳在相繼的n 天裡,每天需用的餐巾數不盡相同。假設第i天需要ri塊餐巾 i 1,2,n 餐廳可以購買新的餐巾,每塊餐巾的費用 為p分 或者把舊餐巾送到快洗部,洗一塊需 m天,其費用為 f 分 或者送到慢洗部,洗一塊需 n 天 n m 其費用為 s這道題是一道最小費用最大流的題目,然而有一些神犇...

餐巾計畫問題

乙個餐廳在相繼的n天裡,第i天需要ri塊餐巾 i l,2,n 餐廳可以從三種途徑獲得餐巾。1 購買新的餐巾,每塊需p分 2 把用過的餐巾送到快洗部,洗一塊需m天,費用需f分 f p 如m l時,第一天送到快洗部的餐巾第二天就可以使用了,送慢洗的情況也如此。3 把餐巾送到慢洗部,洗一塊需n天 n m ...

題解 餐巾計畫問題

傳送門 乙個餐廳在相繼的 nnn 天裡,每天需用的餐巾數不盡相同。假設第 iii 天需要 rir iri 塊餐巾 i 1,2,n 餐廳可以購買新的餐巾,每塊餐巾的費用為 ppp 分 或者把舊餐巾送到快洗部,洗一塊需 m 天,其費用為 f 分 或者送到慢洗部,洗一塊需 nnn 天 n mn mn m ...