這個題目現在第二次做,感覺沒有這麼簡單,可能是我太久沒有寫這種題目了,基本上都忘記了,所以我連這個是費用流都沒有看出來。
有點小傷心,知道是費用流之後,我居然還拆點了。
這個寫完之後確實感覺沒有那麼難,但是寫的過程還是很艱辛的,這個為什麼是乙個費用流呢,
因為我們知道每移動乙個單位的貨物,就會產生一單位的費用,所以這個就是費用流。
再而為什麼這個不要拆點呢,因為每乙個點都是只有一種屬性,要麼就是多了要輸出,要麼就是少了要進入,這個其實我也有點不是很清楚。
還沒有完全弄明白。
#include #includeview code#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
using
namespace
std;
const
int maxn = 3e5 + 10
;typedef
long
long
ll;struct
edge
};vector
e;vector
g[maxn];
inta[maxn], p[maxn], inq[maxn], d[maxn], n, m;
void init(int
n)void addedge(int u,int v,int c,int
cost)
bool spfa(int s,int t,int &flow,ll &cost)}}
if (d[t] == inf) return
false
; flow +=a[t];
cost += d[t] * 1ll *a[t];
for(int u=t;u!=s;u=e[p[u]].u)
return
true;}
int mincostmaxflow(int s,int t,ll &cost)
intmain()
else
if(i==n)
else
}ll ans = 0
; mincostmaxflow(s, t, ans);
printf(
"%lld\n
", ans);
return0;
}
P4016 負載平衡問題 網路流
gg 公司有 nn 個沿鐵路運輸線環形排列的倉庫,每個倉庫儲存的貨物數量不等。如何用最少搬運量可以使 nn個倉庫的庫存數量相同。搬運貨物時,只能在相鄰的倉庫之間搬運。輸入格式 檔案的第 11 行中有 11 個正整數 nn,表示有 nn 個倉庫。第 22 行中有 nn 個正整數,表示 nn 個倉庫的庫...
P4016 負載平衡問題
方法二 p4016 負載平衡問題 g 公司有 n 個沿鐵路運輸線環形排列的倉庫,每個倉庫儲存的貨物數量不等。如何用最少搬運量可以使 n 個倉庫的庫存數量相同。搬運貨物時,只能在相鄰的倉庫之間搬運。輸入格式 第一行乙個正整數 n,表示有 n 個倉庫。第二行 n 個正整數,表示 n 個倉庫的庫存量。輸出...
P4016 負載平衡問題 費用流
有 n le 100 個沿鐵路運輸線環形排列的倉庫,每個倉庫儲存的貨物數量不等。如何用最少搬運量可以使 n 個倉庫的庫存數量相同。搬運貨物時,只能在相鄰的倉庫之間搬運。費用流模型,每個倉庫建乙個點,各個倉庫之間相互連邊,費用為 1,倉庫與源連邊,流量按照題意設定,倉庫與匯點連邊,流量是最終的平均流量...