负载平衡问题
Description
G
公司有
如何用最少搬运量可以使
n
个仓库的库存数量相同。
搬运货物时,只能在相邻的仓库之间搬运。
Input
文件的第
第
Output
程序运行结束时,将计算出的最少搬运量输出。
Sample Input
5
17 9 14 16 4
Sample Output
11
Solution
模拟题…………
不知道为什么放在网络流二十四题中。
Code
- #include <iostream>
- #include <cstdio>
- #define Min(x,y) ((x)<(y)?(x):(y))
- #define abs(x) ((x)>0?(x):(-(x)))
- using namespace std;
- int n,sum,ans=0x3f3f3f3f;
- int s[1100][1100];
- int main(){
- freopen(”move.in”,“r”,stdin);
- freopen(”move.out”,“w”,stdout);
- scanf(”%d”,&n);
- for(int i=1;i<=n;i++){
- scanf(”%d”,&s[1][i]);
- sum+=s[1][i];
- }
- sum/=n;
- for(int i=1;i<=n;i++)
- s[1][i]-=sum,s[1][i+n]=s[1][i];
- for(int i=2;i<=n;i++)
- for(int j=1;j<=2*n;j++)s[i][j]=s[1][j];
- for(int i=1;i<=n;i++){
- int ans0=0;
- for(int j=i;j<i+n-1;j++){
- ans0+=abs(s[i][j]);
- s[i][j+1]+=s[i][j];
- }
- ans=Min(ans,ans0);
- }
- printf(”%d\n”,ans);
- return 0;
- }