本題有數學貪心解法和費用流解法
數學解法就看看luogu題解吧,窩太菜了
費用流就找建圖法,依舊是設超級源點和匯點,初始資料就源點s向該點連點,流量就是初始量,代價為0,然後每個倉庫向相鄰的點連邊,容量無限大,代價為1,再每個倉庫向匯點連點,容量就是sum/n,代價為0,直接跑最大流最小費就行了,這樣能保證源點出的匯點全進
typedef longview codelong
ll;typedef pair
pll;
typedef pair
pint;
const
int maxm = 2000+5
;const
int inf = 0x3f3f3f3f
;struct
edge edges[maxm];
inthead[maxm], cur[maxm], cnt, fa[maxm], d[maxm], n;
bool
inq[maxm];
void
init()
void addedge(int u, int v, int cap, int
cost) ;
head[u] = cnt++;
}bool spfa(int s, int t, int &flow, ll &cost) }}
}if(d[t] == inf) return
false
; flow +=cur[t];
cost += 1ll*d[t]*cur[t];
for(int u = t; u != s; u =edges[fa[u]].u)
return
true;}
int mincostmaxflow(int s, int t, ll &cost)
void
run_case()
sum /=n;
for(int i = 1; i <= n; ++i)
addedge(i, t, sum,
0), addedge(t, i, 0, 0
); ll cost = 0
; mincostmaxflow(s, t, cost);
cout
<
}int
main()
LUOGU P4016 負載平衡問題
題目描述 gg 公司有 nn 個沿鐵路運輸線環形排列的倉庫,每個倉庫儲存的貨物數量不等。如何用最少搬運量可以使 nn 個倉庫的庫存數量相同。搬運貨物時,只能在相鄰的倉庫之間搬運。輸入輸出格式 輸入格式 檔案的第 11 行中有 11 個正整數 nn 表示有 nn 個倉庫。第 22 行中有 nn 個正整...
LuoguP4016 負載平衡問題 費用流
g 公司有 n個沿鐵路運輸線環形排列的倉庫,每個倉庫儲存的貨物數量不等。如何用最少搬運量可以使 n個倉庫的庫存數量相同。搬運貨物時,只能在相鄰的倉庫之間搬運。輸入格式 檔案的第 11 行中有 11 個正整數 n,表示有 n個倉庫。第 22 行中有 n個正整數,表示 n個倉庫的庫存量。輸出格式 輸出最...
P4016 負載平衡問題
方法二 p4016 負載平衡問題 g 公司有 n 個沿鐵路運輸線環形排列的倉庫,每個倉庫儲存的貨物數量不等。如何用最少搬運量可以使 n 個倉庫的庫存數量相同。搬運貨物時,只能在相鄰的倉庫之間搬運。輸入格式 第一行乙個正整數 n,表示有 n 個倉庫。第二行 n 個正整數,表示 n 個倉庫的庫存量。輸出...