題解 P2517 HAOI2010 訂貨

2022-06-04 04:12:08 字數 1216 閱讀 9783

題目鏈結

很快啊,一下子就判斷出是個費用流。

首先,構建兩個虛擬源匯點。

根據題目分析,

第i個月對某產品的需求量為ui

結合全文,因為該月可以有剩餘,所以不能確定入流限制,那就換條路,咱們選擇跟匯點連邊。自然而然,容量為 \(ui\), 費用為 \(0\)(匯點是虛擬的,不需要花費)。

然後我們在從源點向該點連邊,因為匯點直接限制了流量,所以容量直接搞成 \(inf\) 就好了,費用為 \(0\)。

也就是,當月購進的與源點連邊,當月售出的與匯點連邊

又因為上一月的剩餘可以留到當月處理,但費用為 \(m\)。用小腦袋瓜想想,不就是將上一月向當月連一條邊嘛?容量為 \(s\)(倉庫容量),費用為 \(m\)。

這不就出來了嗎,最後跑一遍費用流模板。

#include#include#includeusing namespace std;

#define rt register int

#define int long long

const int n = 105, m = 500, inf = 1e9;

int n, m, v, ff, tot, cnt, s, t, ss, tt;

int head[n], to[m], f[m], w[m], nex[m], q[n], d[n], pre[n], incf[n], v[n];

bool vis[n];

char s;

inline void add(int a, int b, int c, int d)

inline bool spfa() }}

}return incf[t] > 0;

}inline int solve()

return cost;

}inline void read(int &x)

while(s <= '9' && s >= '0')

x *= ff;

}signed main()

for(rt i = 1; i <= n; i ++)

printf("%lld",solve());

return 0;

}

洛谷 P2517 HAOI2010 訂貨

給出每乙個月的商品需求量和每乙個月的生產成本以及倉庫容量和貯存費用 每月,與貯存貨物的量無關 問最小成本.一開始沒有想到用費用流去做,且難以建圖,但將名詞轉化一下即可 將貨物的量當做流量,成本當做費用,先建乙個超級源點 可以理解為工廠 連向每乙個月的節點,因為生產數量無限制,故流量為inf,費用為成...

HAOI2010 工廠選址題解

某地區有m座煤礦,其中第i號礦每年產量為ai噸,現有火力發電廠乙個,每年需用煤b噸,每年執行的固定費用 包括折舊費,不包括煤的運費 為h元,每噸原煤從第i號礦運到原有發電廠的運費為ci0 i 1,2,m 現規劃新建乙個發電廠,m座煤礦每年開採的原煤將全部供給這兩座發電廠。現有n個備選的廠址。若在第j...

P2515 HAOI2010 軟體安裝

傻了。思路 scc 縮點,樹上揹包。提交 2次 無語。建邊建錯了 思路 關係可能會形成環,而整個環是乙個整體 要選就選環上所有點,否則整個不選 所以我們先把所有的環縮點,然後便形成了一棵樹 乙個點不可能有兩個父親 然後跑樹上揹包。include include using namespace std...