https://www.luogu.org/problem/show?pid=1031#sub

题目描述

有 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
 #include <algorithm>
#include <iostream> using namespace std; int n,ans,sum;
int card[]; int main()
{
cin>>n;
for(int i=;i<=n;i++)
cin>>card[i],sum+=card[i];
int midd=sum/n;
for(int i=;i<=n;i++)
{
if(card[i]>midd)
card[i+]+=card[i]-midd,ans++;
if(card[i]<midd)
card[i+]+=card[i]-midd,ans++;
}
cout<<ans;
return ;
}

最新文章

  1. Linux的3个文件时间
  2. sha1散列(C语言)
  3. Web App 向上滑动动态加载数据 2015-06-11 09:36 20人阅读 评论(0) 收藏
  4. leetcode 141
  5. request.getAttribute() 和 request.getParameter() 有何区别?
  6. CUBRID学习笔记 33 net事务 cubrid教程示例
  7. Jquery 遍历表单 AJAX提交
  8. php 生成mysql数据字典代码
  9. iOS UIWebView 载入https 网站出现NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL,
  10. 每天一个Linux命令—— crontab
  11. ArcGIS API for JavaScript 4.2学习笔记[18] 搜索小部件
  12. Python基础__字典、集合、运算符
  13. Java设计模式系列-工厂方法模式
  14. Docker系列06—基于容器制作镜像并上传到Docker Registry
  15. 操作系统:修改VirtualBox for Mac的虚拟硬盘大小
  16. linux常用命令简述
  17. 深入理解Redis系列之SpringBoot集成Redis
  18. 简述iproute家族命令
  19. python-pcl
  20. CSS 背景图像 填充部分元素示例

热门文章

  1. A Few Words on Callbacks and Asynchronous Mechanism In Javascript
  2. 理解JavaScript中的闭包
  3. Java经典算法之插入排序(Insert Sort)
  4. Java常用集合类
  5. “国家队爷”杯液体战争AI比赛!!__SymenYang
  6. NOIP真题汇总
  7. Http协议详解(转)&gt;&gt;&gt;写的很好
  8. [转]Android监听ListView里Button事件
  9. 兼容浏览器 div固定浏览器窗口底部 浮动div
  10. es6杂记