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,倉庫與源連邊,流量按照題意設定,倉庫與匯點連邊,流量是最終的平均流量...