[NOIP2002] 提高组 洛谷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)
输出格式:
输出至屏幕。格式为:
所有堆均达到相等时的最少移动次数。
输入输出样例
4 9 8 17 6
3
先求出牌总数的平均数,目标状态肯定是让所有牌堆的牌数量都等于这个平均数。
如果当前堆牌数多于平均数,就需要移走,否则需要从别处取来。
从最左端向右扫描,规定只能向右移动牌(移动正数张表示移走,移动负数张表示取来),算需要移动的次数。←和原问题等价。
1 /*by SilverN*/ 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #include<cstdio> 6 #include<cmath> 7 using namespace std; 8 const int mxn=1e4; 9 int read(){ 10 int x=0,f=1;char ch=getchar(); 11 while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();} 12 while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();} 13 return x*f; 14 } 15 int n; 16 int a[mxn]; 17 int smm=0; 18 int main(){ 19 n=read(); 20 int i,j; 21 for(i=1;i<=n;i++){ 22 a[i]=read(); 23 smm+=a[i]; 24 } 25 smm/=n; 26 int cnt=0; 27 for(i=1;i<n;i++){ 28 if(a[i]!=smm){ 29 ++cnt; 30 a[i+1]+=a[i]-smm; 31 } 32 } 33 cout<<cnt<<endl; 34 return 0; 35 }
转载于:https://www.cnblogs.com/SilverNebula/p/5970733.html
[NOIP2002] 提高组 洛谷P1031 均分纸牌相关推荐
- 洛谷——P1031 均分纸牌
题目描述 有NN堆纸牌,编号分别为 1,2,-,N1,2,-,N.每堆上有若干张,但纸牌总数必为NN的倍数.可以在任一堆上取若干张纸牌,然后移动. 移牌规则为:在编号为11堆上取的纸牌,只能移到编号为 ...
- 洛谷 P1031 均分纸牌【交叉模拟】
题目描述 有 N 堆纸牌,编号分别为 1,2,-, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若干张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 ...
- 洛谷P1031 均分纸牌(贪心)
题目描述 有N堆纸牌,编号分别为 1,2,-,N.1,2,-,N.1,2,-,N.每堆上有若干张,但纸牌总数必为NNN的倍数.可以在任一堆上取若干张纸牌,然后移动. 移牌规则为:在编号为111堆上取的 ...
- [NOIP2006] 提高组 洛谷P1066 2^k进制数
题目描述 设r是个2^k 进制数,并满足以下条件: (1)r至少是个2位的2^k 进制数. (2)作为2^k 进制数,除最后一位外,r的每一位严格小于它右边相邻的那一位. (3)将r转换为2进制数q后 ...
- [NOIP1999] 提高组 洛谷P1014 Cantor表
题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 - 2/1 2/2 2/3 2/4 - ...
- [NOIP2005] 提高组 洛谷P1051 谁拿了最多奖学金
题目描述 某校的惯例是在每学期的期末考试之后发放奖学金.发放的奖学金共有五种,获取的条件各自不同: 1) 院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1 ...
- [NOIP2012] 提高组 洛谷P1080 国王游戏
题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右 手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排 成一排,国王站在队伍 ...
- [NOIP1998] 提高组 洛谷P1011 车站
题目描述 火车从始发站(称为第1站)开出,在始发站上车的人数为a,然后到达第2站,在第2站有人上.下车,但上.下车的人数相同,因此在第2站开出时(即在到达第3站之前)车上的人数保持为a人.从第3站起( ...
- [NOIP2007] 提高组 洛谷P1099 树网的核
题目描述 设T=(V, E, W) 是一个无圈且连通的无向图(也称为无根树),每条边到有正整数的权,我们称T为树网(treebetwork),其中V,E分别表示结点与边的集合,W表示各边长度的集合,并 ...
最新文章
- Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
- C 过渡 C++ 1
- UA SIE545 优化理论基础4 对偶理论简介2 弱对偶与Duality Gap
- Map+Model+ModelMap介绍
- CF 670C Cinema(算竞进阶习题)
- mysql报错:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre
- 编译C/C++为dll供Python调用
- Django系列:(1)PyCharm下创建并运行我们的第一个Django工程
- 服务器上装双系统,服务器上安装双系统
- Acer4745G笔记本蓝牙驱动安装
- Oracle imp/impdp 导入dmp文件到数据库
- 像智能手机一样造车,可能吗?
- android 平板怎么截图,平板电脑怎样截图
- matlab中提取公因子化简,利用MATLAB化简表达式或者多项式 | 望天博客
- 安卓下使用OpenCL进行PowerVR GPU编程
- 康考迪亚大学应用计算机科学,康考迪亚大学专业设置详情
- 51单片机数码管交通灯倒计时c语言,51单片机数码管倒计时模拟交通灯汇编程序...
- Java IO模型:BIO、NIO、AIO讲解
- 小程序获取oppenid时返回40125或者40029
- NFT Insider #65:韩国娱乐业巨头CJ ENM与The Sandbox达成合作,YGG 建立巴西社区的SubDAO
热门文章
- 线索二叉树怎么画_固原超级记忆技巧课程怎么学_蒙正智升教育
- python程序中断时,输出打印日志
- windows安装spark工具记录
- 程序语言python循环_Python语言程序设计之一--for循环
- webstorm前端调用后端接口_一篇前端同学对后端接口的吐槽
- java定时器结合springboot_SpringBoot开发案例之整合定时任务(Scheduled)
- c++重载自增与自减运算符(前置与后置)
- 笔记-高项案例题-2019年下-人力资源管理-管理者权力-马斯洛需求理论-冲突管理...
- 笔记-信息化与系统集成技术-信息的质量属性
- Linux系统中软链接与硬链接使用特点