https://www.luogu.org/problemnew/show/P1031
题解: 贪心
先求平均值,再求每个数与均值的差值,然后就从第一位往后滑动(贪心),我不够均值就在后一位借,我够了就跳过
我刚写时,只想到了找平均数和差值,没想到往后滑动推,准备一个一个值往两边滑动找,想复杂了
#include<cstdio>
#include<cstring>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<stdlib.h>
using namespace std;
const int inf=0x3f3f3f3f;
const int maxn=1000000;
int a[maxn];
int main(){
int n;
cin>>n;
int sum=0;
for(int i=0;i<n;i++){
cin>>a[i];
sum+=a[i];
}
int k=sum/n;
for(int i=0;i<n;i++){
a[i]-=k;
}
int ans=0;
for(int i=0;i<n-1;i++){
if(a[i]==0) continue;
a[i+1]=a[i+1]+a[i];
ans++;
}
cout<<ans<<endl;
}