題解 洛谷P4016 負載平衡問題

2022-05-16 10:44:57 字數 845 閱讀 3955

portal1:luogu

portal2: libreoj

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

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

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

輸出最少搬運量。

5

17 9 14 16 4

11
對於\(100\%\)的測試資料:\(1 \leq n \leq 100\)。

雖然說是網路流24題,其實貪心+排序就夠了。

#include#include#include#include#includeusing namespace std;

const int maxn=105;

int n, a[maxn];

int main()

sum/=n;

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

a[i]+=a[i-1]-sum;

sort(a+1, a+n+1);

sum=a[(n+1)>>1];//盡量用位運算,比較快

int ans=0;

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

ans+=abs(a[i]-sum);//計算每乙個距離中間的位置

printf("%d\n",ans);

return 0;

}

洛谷P4016 負載平衡問題

問題描述 有乙個由n個沿環形鐵路分布的倉庫,每個倉庫有一定的貨物,某乙個倉庫可以往兩邊的倉庫運送貨物,求使n個倉庫貨物相等時的最小運輸量。怎麼做?這道題有很多做法,有貪心的,有二分的,有網路流的,其他的演算法相信同學們可以在其他的題解上看到,所以在這裡主要講一下網路流的做法。其實這是一道最小費用最大...

洛谷 P4016 負載平衡問題

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

洛谷 P4016 負載平衡問題

第一眼看見覺得和均分紙牌差不多,然而因為這是環形的,並不能用均分紙牌的方法做,但是均分紙牌的思想仍然適用 首先我們假設平均數為sum1。那麼對於第1個人,我們假設他給第n個人k個糖果,第2個人給1 第3個人給2 第n個人給第n 1個人 那麼對於第1個人給完n,第2個人給完1,第乙個人不會再改變糖果數...