P1031

· · 题解

均分纸牌

  ※第一堆牌相差的牌只能由第二堆牌承担(给予或索要)

  ※第一堆牌都达到要求了又去动它干嘛

  ※可以直接删除第一堆牌

  (因为

      1.已经完成目标

      2.无论怎么移动都只能从第二堆里找

  所以不要去管它)

  ※第二堆牌神奇的变成了第一堆牌

  ※重复上述操作

  ※如果当前牌没操作就已经达标了跳过啊~

  ※下副牌变成负数又怎么样?

  ※ ∵ 上述步骤皆可逆

  ※ ∴ 证毕(逃      

Code:

#include<bits/stdc++.h>
using namespace std;
int n,a[101],mid,all,ans;
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    scanf("%d",&a[i]),all+=a[i];
    all/=n;
    for(int i=1;i<=n;i++)if(a[i]-all)
    a[i+1]+=a[i]-all,ans++;
    printf("%d",ans);
    return 0;
}