CodeForces 609C Load Balancing

先算出目标状态,然后拿当前状态与目标状态对比,即可算出答案

#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;

const int maxn=100000+10;
int a[maxn];
int b[maxn];

int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);

    sort(a+1,a+1+n);
    int sum=0;
    for(int i=1;i<=n;i++) sum=sum+a[i];

    int ave=sum/n;
    for(int i=1;i<=n;i++) b[i]=ave;

    int MOD=sum%n;
    for(int i=n;i>=n-MOD+1;i--) b[i]++;

   // for(int i=1;i<=n;i++) printf("%d ",b[i]);
    int ans=0;
    for(int i=1;i<=n;i++)
        ans=ans+max(0,a[i]-b[i]);

    printf("%d
",ans);
    return 0;
}
原文地址:https://www.cnblogs.com/zufezzt/p/5075344.html