问题 : #6013. 「网络流 24 题」负载平衡
时间限制: 1 Sec 内存限制: 256 MB题目描述
G 公司有 n nn 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等。如何用最少搬运量可以使 n nn 个仓库的库存数量相同。搬运货物时,只能在相邻的仓库之间搬运。
输入
文件的第 1 11 行中有 1 11 个正整数 n nn,表示有 n nn 个仓库。
第 2 22 行中有 n nn 个正整数,表示 n nn 个仓库的库存量。
输出
输出最少搬运量。
样例输入
5 17 9 14 16 4
样例输出
11
提示
1≤n≤100
#include <stdio.h> #include <algorithm> using namespace std; int main() { int n, m, min, s[10100], a[10100]; long long sum; while(~scanf("%d", &n)) { min = 0; sum = 0; for (int i = 0; i < n; i++) { scanf("%d", &s[i]); sum += s[i]; } m = sum / n; a[0] = 0; for (int i = 1; i < n; i++) a[i] = a[i - 1] + s[i] - m; sort(a, a + n); for (int i = 0, j = n - 1; i < j; i++, j--) min += a[j] - a[i]; printf("%d\n", min); } return 0; }
来源:https://www.cnblogs.com/lzyws739307453/p/8906272.html