首页 > 其他 > 详细

609C Load Balancing

时间:2015-12-28 21:55:37      阅读:301      评论:0      收藏:0      [点我收藏+]

题意:

”平均数“的意思是:最大数和最小数之间的差值为0或1;

先求“平均”数组,再相减。

技术分享
 1 #include<iostream>
 2 #include<cstdlib>
 3 #include<cstdio>
 4 #include<algorithm>
 5 #include<math.h>
 6 #include<memory.h>
 7 #define clc(a,b) memset(a,b,sizeof(a))
 8 #define ll long long int
 9 using namespace std;
10 
11 int n;
12 int a[100010];
13 
14 int main()
15 {
16     while(~scanf("%d",&n))
17     {
18         clc(a,0);
19         ll sum=0;
20         ll ans=0;
21         for(int i=0; i<n; i++)
22         {
23            scanf("%d",&a[i]);
24            sum+=a[i];
25         }
26         sort(a,a+n);
27         if(sum%n==0)
28         {
29             int ave=sum/n;
30             for(int i=0;i<n;i++)
31                   ans+=fabs(ave-a[i]);
32              ans=ans/2;
33         }
34         else
35         {
36             ll res=sum%n;
37             ll ave=(sum-res)/n;
38             //int vv=ave;
39             int b[100010];
40             //memset(b,ave,sizeof(b));
41             for(int i=0;i<n;i++)
42                 b[i]=ave;
43 //            cout<<ave<<endl;
44 //            cout<<b[1]<<endl;
45             for(int i=n-1;i>n-1-res;i--)
46             {
47                 b[i]+=1;
48             }
49 //            cout<<b[1]<<endl;
50 //            for(int i=0;i<n;i++)
51 //            {
52 //                cout<<b[i]<<endl;
53 //            }
54             for(int i=0;i<n;i++)
55             {
56                    ans+=fabs(b[i]-a[i]);
57             }
58             ans/=2;
59         }
60         cout<<ans<<endl;
61     }
62     return 0;
63 }
View Code

 

609C Load Balancing

原文:http://www.cnblogs.com/ITUPC/p/5083654.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!