[2002年NOIP提高组] 均分纸牌
思路:贪心算法。将n堆纸牌的平均数算出来,将每堆纸牌i与平均数的差值转到i+1堆纸牌上,每操作一步,计数器+1。最后输出操作步数就好。
代码如下:
#include<iostream>
using namespace std;
int a[10010];
int main()
{
int n;
cin>>n;
int ave=0,step=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
ave+=a[i];
}
ave/=n;//平均数
for(int i=1;i<=n;i++)
{
if(a[i]>ave)//这个数>平均数
{
step++;
a[i+1]+=a[i]-ave;//后面的数+多余的
}
if(a[i]<ave)//这个数<平均数
{
step++;
a[i+1]-=ave-a[i];//后面的数-少了的
}
}
cout<<step<<endl;
return 0;
}
标签:NOIP,纸牌,int,平均数,2002,step,ave From: https://www.cnblogs.com/xdzxyingrui/p/16591048.html