E - Box of Bricks (贪心)
题意:给定 个高度的砖块,每一步只能移动一个砖块,求最少步骤让所有砖块高度相等。
思路:签到题,根据贪心的思想,因为总砖块数不能改变,所以最后的目标高度
我们可以预先求出来,
然后将大于目标高度的砖块或者小于目标砖块的高度与目标高度取差值求和就是最后的答案。
即
时间复杂度:
AC代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=1e2+10;
#define mst(a) memset(a,0,sizeof a)
int a[N];
int main(){
int n,k=0;
while(cin>>n&&n){
int sum=0;
for(int i=1;i<=n;i++)
cin>>a[i],sum+=a[i];
sum/=n;
int ans=0;
for(int i=1;i<=n;i++)
if(a[i]>sum) ans+=a[i]-sum;
printf("Set #%d\n",++k);
printf("The minimum number of moves is %d.\n\n",ans);
}
return 0;
}