費用流 負載平衡問題

2021-08-20 21:35:13 字數 1157 閱讀 7384

g 公司有 n 個沿鐵路運輸線環形排列的倉庫,每個倉庫儲存的貨物數量不等。如何用最少搬運量可以使 n 個倉庫的庫存數量相同。搬運貨物時,只能在相鄰的倉庫之間搬運。

輸入輸出格式

輸入格式:

檔案的第 1 行中有 1 個正整數 n ,表示有 n 個倉庫。

第 2 行中有 n 個正整數,表示 n 個倉庫的庫存量。

輸出格式:

輸出最少搬運量。

輸入輸出樣例

輸入樣例

5 17 9 14 16 4

輸出樣例

11 說明

1≤n≤100

很明顯是要求出平均數,然後用貨物數量減去平均數得到波動值

波動值大於0的明顯可以「救濟」其他倉庫,連源點

小於0就相反

每個相鄰倉庫建乙個流量∞,代價1的邊跑費用流即可

#include 

#include

#include

#define rep(i,a,b) for (i=a;i<=b;i++)

#define inf 2147483647

#define maxn 201

using

namespace

std;

struct edgeg[501];

intlist[maxn],pre[maxn],dis[maxn];

int cnt=1;

int s,t;

int costans;

int n;

void add(int u,int v,int c,int w)

bool spfa()

}i=g[i].nx;

}b[x]=0;

}return dis[t]int mcf()

costans+=f*dis[t];x=t;

while (pre[x])

return f;

}void dinic()

int main()

p/=n;s=101;t=102;

rep(i,1,n)

add(1,n,inf,1);

add(n,1,inf,1);

dinic();

printf("%d",costans);

}

網路流24題 負載平衡問題(費用流)

題目描述 要求最後所有倉庫的庫存相同,那麼就可以想到求出這個值,也就是倉庫庫存量的平均值delta。如果某乙個倉庫的庫存量x大於這個平均值,那麼就從源點向這個店連一條流量為x delta的邊,表示這個倉庫可以向外搬運的貨物數量,費用為0。反之,如果某乙個倉庫的存貨量小於x這個平均值,就從這個店向匯點...

LuoguP4016 負載平衡問題 費用流

g 公司有 n個沿鐵路運輸線環形排列的倉庫,每個倉庫儲存的貨物數量不等。如何用最少搬運量可以使 n個倉庫的庫存數量相同。搬運貨物時,只能在相鄰的倉庫之間搬運。輸入格式 檔案的第 11 行中有 11 個正整數 n,表示有 n個倉庫。第 22 行中有 n個正整數,表示 n個倉庫的庫存量。輸出格式 輸出最...

P4016 負載平衡問題 費用流

有 n le 100 個沿鐵路運輸線環形排列的倉庫,每個倉庫儲存的貨物數量不等。如何用最少搬運量可以使 n 個倉庫的庫存數量相同。搬運貨物時,只能在相鄰的倉庫之間搬運。費用流模型,每個倉庫建乙個點,各個倉庫之間相互連邊,費用為 1,倉庫與源連邊,流量按照題意設定,倉庫與匯點連邊,流量是最終的平均流量...