题目描述

有 N 堆纸牌,编号分别为 1,2,…, N。每堆上有若干张,但纸牌总数必为 N 的倍数。可以在任一堆上取若干张纸牌,然后移动。

移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。

现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。

例如 N=4,4 堆纸牌数分别为:

①9②8③17④6

移动3次可达到目的:

从 ③ 取 4 张牌放到 ④ (9 8 13 10) -> 从 ③ 取 3 张牌放到 ②(9 11 10 10)-> 从 ② 取 1 张牌放到①(10 10 10 10)。

输入输出格式

输入格式:

键盘输入文件名。文件格式:

N(N 堆纸牌,1 <= N <= 100)

A1 A2 … An (N 堆纸牌,每堆纸牌初始数,l<= Ai <=10000)

输出格式:

输出至屏幕。格式为:

所有堆均达到相等时的最少移动次数。

输入输出样例

输入样例#1:

4
9 8 17 6

输出样例#1:

3

思路:把每堆牌的张数减去平均张数,题目就变成移动正数,加到负数中,使大家都变成0

源代码

#include<iostream>
#include<algorithm>
using namespace std;
int main()
{int n,a[10000];int sum=0,average,step=0;int i,j;cin>>n;for(i=1;i<=n;i++)    {cin>>a[i];//输入各堆张数sum+=a[i];//求总张数}average=sum/n;//求平均张数for(i=1;i<=n;i++)  a[i]-=average;//每堆牌数减去平均数for(i=1;a[i]==0&&i<n;)i++;//过滤左边的0for(j=n;a[j]==0&&j>1;)j--;//过滤右边的0for(;i<j;){a[i+1]+=a[i];//将第i堆牌移到第i+1堆中去a[i]=0;//第i堆牌移走后变为0i++;//对下一堆牌进行循环操作step++;//移牌步数计数 while(a[i]==0&&i<j)    i++;//过滤移牌过程中产生的0} cout<<step<<endl;return 0;
}

均分纸牌(洛谷-P1031)相关推荐

  1. 洛谷——P1031 均分纸牌

    题目描述 有NN堆纸牌,编号分别为 1,2,-,N1,2,-,N.每堆上有若干张,但纸牌总数必为NN的倍数.可以在任一堆上取若干张纸牌,然后移动. 移牌规则为:在编号为11堆上取的纸牌,只能移到编号为 ...

  2. [NOIP2002] 提高组 洛谷P1031 均分纸牌

    题目描述 有 N 堆纸牌,编号分别为 1,2,-, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 ...

  3. 用贪心策略均分纸牌(洛谷P1031题题解,Java语言描述)

    题目要求 P1031题目链接 分析 我们一定要知道的是average,这个average其实就是每堆牌最终一定要达到的情况. 想要更简单的结果,那就可以用贪心策略,从某一侧开始,逐一的补齐或天选,反正 ...

  4. 洛谷 P1031 均分纸牌【交叉模拟】

    题目描述 有 N 堆纸牌,编号分别为 1,2,-, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若干张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 ...

  5. 洛谷P1031 均分纸牌(贪心)

    题目描述 有N堆纸牌,编号分别为 1,2,-,N.1,2,-,N.1,2,-,N.每堆上有若干张,但纸牌总数必为NNN的倍数.可以在任一堆上取若干张纸牌,然后移动. 移牌规则为:在编号为111堆上取的 ...

  6. Luogu P1031 均分纸牌(贪心)

    P1031 均分纸牌 题目描述 有 N 堆纸牌,编号分别为 1,2,-, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若干张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸牌 ...

  7. 洛谷 - 试炼场(全部题目备份)

    整理的算法模板合集: ACM模板 目录 1.新手村 1 - 1 洛谷的第一个任务 1 - 2 顺序与分支 1 - 3 循环!循环!循环! 1 - 4 数组 1 - 5 简单字符串 1 - 6 过程函数 ...

  8. 算法设计 - 二分法和三分法,洛谷P3382

    二分法 二分查找:找目标值位置 二分法是一种适用于特殊场景下的分治算法. 这里的特殊场景指的是,二分法需要作用在一个具有单调性的区间内. 比如,我们熟知的二分查找,就是一种二分法的具体实现,二分查找必 ...

  9. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

最新文章

  1. C语言的集成开发环境
  2. Spring - Java/J2EE Application Framework 应用框架 第 18 章 使用Quartz或Timer完成时序调度工作
  3. Android开源框架——图表MPAndroidChart
  4. 排除网络故障课后习题参考答案
  5. 3DMax插件和它的3DXI接口
  6. 2020牛客国庆集训派对day3 Points
  7. 我的这套VuePress主题你熟悉吧
  8. Harbor的搭建(vmware企业级docker镜像私服)
  9. 浅谈JavaScript中的apply、call和bind
  10. TensorFlow---(1)开源软件库TensorFlow最全教程和项目列表
  11. uniapp语音识别_uni-app开发APP语音播报功能
  12. luaprofiler探索
  13. 阶段3 3.SpringMVC·_06.异常处理及拦截器_1 SpringMVC异常处理之分析和搭建环境
  14. 传智168期 day61 redis 笔记(2017年8月25日19:16:30)
  15. 塔尖上的AI医疗,它要飞起来必须迈过这几道坎丨Xtecher 观察
  16. 管家婆软件显示服务器连接失败,管家婆软件提示“连接服务器失败”怎么办
  17. vs2015如何安装vsix扩展工具
  18. 创建图片外链——“极简图床”
  19. 【北交所周报】北交所再迎8只新股;康普化学、凯华材料上市首日逆势大涨;康乐卫士过会,或成北交所最大IPO;北交所推出直联机制...
  20. 没有公网IP,怎么实现外网访问内网视频监控

热门文章

  1. 17年数据分析经验告诉你大数据行业的门道
  2. 那些我当了程序员以后才理解的崩溃瞬间!
  3. 厉害了!Spring Boot 2.5正式发布
  4. Docker入门,看了不理解,假一赔命
  5. 漫画:程序员真是太太太太太有趣了!
  6. 绿色日期控件皮肤 My97 DatePicker
  7. 【图像去模糊】 deconvolution总结
  8. 数据结构拾遗(1) --红黑树的设计与实现(上)
  9. 简单实现Popup弹出框添加数据
  10. 微信小程序周报(第八期)