水一道NOIP2002提高组的题【A003】
【A003】均分纸牌【难度A】————————————————————————————————————————————————————
【题目要求】
有 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 堆纸牌,每堆纸牌初始数,均大于零且不超过10000),两两之间有一个空格分隔。
【输出要求】
一个数,表示各堆纸牌数均达到相等时的最少移动次数。
【输入示例】
4
9 8 17 6
【输出示例】
3
【解析】
本题主要考查的是数据处理的数学思想,语法方面只需要用到简单的循环和数组就解决问题。既然要均分,我们不妨把目标值算出来,就是所有数的和再除以n,既然说只能左移或右移那我们就把当前值与目标值的差“转手”给当前+1的堆中便可达到目的。
【代码】
#include<iostream>
#include<cstdio> using namespace std; int main()
{
int n,a[100],sum=0,k=0;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i];
sum+=a[i];
}
int mid=sum/n;
for(int i=0;i<n;i++)
{
int t=0;
if(a[i]!=mid)
{
t=a[i]-mid;
a[i+1]+=t;
k++;
}
}
cout<<k;
return 0;
}
版权所有,转发必须标明出处,否则必须找事。
水一道NOIP2002提高组的题【A003】的更多相关文章
- NOIP2010提高组真题部分整理(没有关押罪犯)
目录 \(NOIP2010\)提高组真题部分整理 \(T1\)机器翻译: 题目背景: 题目描述: 输入输出格式: 输入输出样例: 说明: 题解: 代码: \(T2\)乌龟棋 题目背景: 题目描述: 输 ...
- NOIP2002 提高组
[NOIP2002] 提高组 T1.均分纸牌 算法:贪心(模拟) [分析]: 1.简化 2.过滤 3.辩证法 详见课件的例7 还有一种类似的思路是:求出平均值后,i←1 to n-1扫描,若a[i] ...
- noip2002提高组题解
再次280滚粗.今天早上有点事情,所以做题的时候一直心不在焉,应该是三天以来状态最差的一次,所以这个分数也还算满意了.状态真的太重要了. 第一题:均分纸牌 贪心.(昨天看BYVoid的noip2001 ...
- 【枚举】Vijos P1496 火柴棒等式 (NOIP2008提高组第二题)
题目链接: https://vijos.org/p/1496 题目大意: 给你n(n<24)根火柴棍,你可以拼出多少个形如“A+B=C”的等式?("+"和"=&qu ...
- $NOIp$提高组做题记录
对了我在这里必须讲一个非常重要的事情,就是前天也就是$2019.8.21$的傍晚,我决定重新做人了$!!$ 其实之前没怎么做$Noip$题,那就从现在开始叭
- 洛谷-均分纸牌-NOIP2002提高组复赛
题目描述 Description 有 N 堆纸牌,编号分别为 1,2,…, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸 ...
- NOIP2014提高组第二题联合权值
还是先看题吧: 试题描述 无向连通图 G 有 n 个点,n-1 条边.点从 1 到 n 依次编号,编号为 i 的点的权值为 Wi ,每条边的长度均为 1.图上两点(u, v)的距离定义为 u 点到 ...
- 11.5NOIP2018提高组模拟题
书信(letter) Description 有 n 个小朋友, 编号为 1 到 n, 他们每人写了一封信, 放到了一个信箱里, 接下来每个人从中抽取一封书信. 显然, 这样一共有 n!种拿到书信的情 ...
- NOIP2018提高组模拟题(四)
能量(energy) Description 有一块能量田,它的形状是 n*m的矩形,每一个格子上都有一个能量值 a[x][y] (可正可负).一块矩形田的能量定义为它的每个格子的能量值之和. ...
随机推荐
- ElasticSearch-5.0安装head插件
环境 Windows10企业版X64 JDK-1.8 ElasticSearch-5.0.0 node-v4.5.0-x64.msi git客户端 步骤 安装node到D盘.如D:\nodejs. 把 ...
- 创建ServiceArea
/// <summary> /// Services the area. /// </summary> /// <param name="networkData ...
- Linux硬链接和软链接
1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接]硬连接指通过索引节点 ...
- todoList使用教程
网页链接:http://www.cnblogs.com/sunada2005/articles/2663030.html
- Android studio 相关错误处理
1.android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" --> 在Activity中设置,表 ...
- UVA-11991 Easy Problem from Rujia Liu?
Problem E Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for ...
- PHP exec/system启动windows应用程序,执行.bat批处理,执行cmd命令
exec 或者 system 都可以调用cmd 的命令 直接上代码: <?php /** 打开windows的计算器 */ exec('start C:WindowsSystem32calc.e ...
- 学习 opencv---(3) ROI 区域图像叠加&初级图像混合
在这篇文章里,我们一起学习了在OpenCV中如何定义感兴趣区域ROI,如何使用addWeighted函数进行图像混合操作,以及将ROI和addWeighted函数结合起来使用,对指定区域进行图像混合操 ...
- linux下编译安装vim7.4并安装clang_complete插件
linux下编译安装vim7.4并安装clang_complete插件 因为debian里软件仓库中下载安装的vim是不支持python写的插件的(可以打开vim,在命令模式先输入:py测试一下),导 ...
- Python自动化之django URL
URL url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html', views.detail) 会把(?P\d+)和(?P\d+)传到后台 需 ...