#include<bits/stdc++.h>
using namespace std;
int n,a[105],avg,cnt;
int main(){
//1、求的avg,获得新的数组(可以明确缺几张和多几张)
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
avg+=a[i];
}
avg/=n;
for(int i=0;i<n;i++)
a[i]-=avg;
//2、如果是负数,那么就从右边拿对应的纸牌数;如果是正数,将多余的纸牌放到右边
//2、一旦遇到,说明当前的位置不需要额外的操作
for(int i=0;i<n;i++){
if(a[i]==0) continue;
cnt++;//一定会多一次操作
a[i+1]+=a[i]; //a[i]<0 a[i+1]需要借纸牌给第i堆 ;a[i]>0 将牌给第i+1堆
a[i]=0;//可以省略
}
cout<<cnt<<endl;
return 0;
}
1320:【例6.2】均分纸牌(Noip2002)
最新推荐文章于 2026-04-25 02:27:06 发布
730

被折叠的 条评论
为什么被折叠?



