P4016 负载平衡问题

题目描述

G 公司有 n 个沿铁路运输线环形排列的仓库,每个仓库存储的货物数量不等。如何用最少搬运量可以使 nn 个仓库的库存数量相同。搬运货物时,只能在相邻的仓库之间搬运。

输入格式

第一行一个正整数 nn,表示有 n 个仓库。

第二行 n 个正整数,表示 n 个仓库的库存量。

输出格式

输出最少搬运量。

输入输出样例

输入 #1
5
17 9 14 16 4
输出 #1
11

说明/提示

1≤n≤100。

方法一:

https://www.cnblogs.com/five20/p/8869948.html

数学+贪心

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int n,a[104];
 4 int s[104];
 5 int main()
 6 {
 7     cin>>n;
 8     int sum=0;
 9     for(int i=1;i<=n;i++)cin>>a[i],sum+=a[i];
10     sum/=n;
11     for(int i=1;i<=n;i++)a[i]-=sum,s[i]=s[i-1]+a[i];
12     sort(s+1,s+1+n);//找中位数
13     int t=s[n/2+1];
14     int ans=0;
15     for(int i=1;i<=n;i++)ans+=abs(t-s[i]);
16     cout<<ans<<endl;
17 }

 

上一篇:下载 | mqtt4aliyun 阿里云IoT 设备模拟器 Mac , Windows版本


下一篇:大数加法——NC1