均分纸牌
程序员文章站
2022-07-13 13:52:20
...
均分纸牌
洛谷P1031
乍一看到,可能会很蒙 移到左右都行?!
但是细想一下,其实 “可以移到相邻左边或右边的堆上“这句话是没啥用的
Because
四堆纸牌,第一堆只能挪到第二堆,那么接下来,任何事情就与第一堆没关系了,因为它的数量已经满足了!那么就可以把第一堆“删掉”,第二堆就变成了第一堆!接下来上述再循环一遍…也就是说,所有的牌 只可能向右边挪!
那接下来就简单了
- 求出平均数
- 算出当前的数与平均数差多少
- 挪到右边
- 完美结束
实现还是比较简单的
#include <iostream>
using namespace std;
int n,average=0,ans=0;
int a[10005];
int main ()
{
cin >> n;
for (int i=0;i<n;i++)
{
cin >> a[i];
average+=a[i];
}
average/=n;
for (int i=0;i<n;i++)
a[i]-=average;
for (int i=0;i<n;i++)
{
if (a[i]!=0)
{
a[i+1]+=a[i];
ans++;
}
}
cout << ans;
}
此题解已AC,也欢迎指出更多优化方法~
❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀
上一篇: 洛谷P1226 快速幂
下一篇: 小鱼会有危险吗