均分纸牌(洛谷-P1031)
题目描述
有 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)相关推荐
- 洛谷——P1031 均分纸牌
题目描述 有NN堆纸牌,编号分别为 1,2,-,N1,2,-,N.每堆上有若干张,但纸牌总数必为NN的倍数.可以在任一堆上取若干张纸牌,然后移动. 移牌规则为:在编号为11堆上取的纸牌,只能移到编号为 ...
- [NOIP2002] 提高组 洛谷P1031 均分纸牌
题目描述 有 N 堆纸牌,编号分别为 1,2,-, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 ...
- 用贪心策略均分纸牌(洛谷P1031题题解,Java语言描述)
题目要求 P1031题目链接 分析 我们一定要知道的是average,这个average其实就是每堆牌最终一定要达到的情况. 想要更简单的结果,那就可以用贪心策略,从某一侧开始,逐一的补齐或天选,反正 ...
- 洛谷 P1031 均分纸牌【交叉模拟】
题目描述 有 N 堆纸牌,编号分别为 1,2,-, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若干张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 ...
- 洛谷P1031 均分纸牌(贪心)
题目描述 有N堆纸牌,编号分别为 1,2,-,N.1,2,-,N.1,2,-,N.每堆上有若干张,但纸牌总数必为NNN的倍数.可以在任一堆上取若干张纸牌,然后移动. 移牌规则为:在编号为111堆上取的 ...
- Luogu P1031 均分纸牌(贪心)
P1031 均分纸牌 题目描述 有 N 堆纸牌,编号分别为 1,2,-, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若干张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸牌 ...
- 洛谷 - 试炼场(全部题目备份)
整理的算法模板合集: ACM模板 目录 1.新手村 1 - 1 洛谷的第一个任务 1 - 2 顺序与分支 1 - 3 循环!循环!循环! 1 - 4 数组 1 - 5 简单字符串 1 - 6 过程函数 ...
- 算法设计 - 二分法和三分法,洛谷P3382
二分法 二分查找:找目标值位置 二分法是一种适用于特殊场景下的分治算法. 这里的特殊场景指的是,二分法需要作用在一个具有单调性的区间内. 比如,我们熟知的二分查找,就是一种二分法的具体实现,二分查找必 ...
- 洛谷-题解 P2672 【推销员】
独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...
最新文章
- C语言的集成开发环境
- Spring - Java/J2EE Application Framework 应用框架 第 18 章 使用Quartz或Timer完成时序调度工作
- Android开源框架——图表MPAndroidChart
- 排除网络故障课后习题参考答案
- 3DMax插件和它的3DXI接口
- 2020牛客国庆集训派对day3 	Points
- 我的这套VuePress主题你熟悉吧
- Harbor的搭建(vmware企业级docker镜像私服)
- 浅谈JavaScript中的apply、call和bind
- TensorFlow---(1)开源软件库TensorFlow最全教程和项目列表
- uniapp语音识别_uni-app开发APP语音播报功能
- luaprofiler探索
- 阶段3 3.SpringMVC·_06.异常处理及拦截器_1 SpringMVC异常处理之分析和搭建环境
- 传智168期 day61 redis 笔记(2017年8月25日19:16:30)
- 塔尖上的AI医疗,它要飞起来必须迈过这几道坎丨Xtecher 观察
- 管家婆软件显示服务器连接失败,管家婆软件提示“连接服务器失败”怎么办
- vs2015如何安装vsix扩展工具
- 创建图片外链——“极简图床”
- 【北交所周报】北交所再迎8只新股;康普化学、凯华材料上市首日逆势大涨;康乐卫士过会,或成北交所最大IPO;北交所推出直联机制...
- 没有公网IP,怎么实现外网访问内网视频监控