(贪心 模拟?) codeVs1098 均分纸牌_diaoque4795的博客-程序员秘密

技术标签: c/c++  

题目描述  Description

有 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)。

输入描述  Input Description

第一行N(N 堆纸牌,1 <= N <= 100)
第二行A1 A2 … An (N 堆纸牌,每堆纸牌初始数,l<= Ai <=10000)

输出描述  Output Description

输出至屏幕。格式为:
所有堆均达到相等时的最少移动次数。‘

样例输入  Sample Input

4
9 8 17 6

样例输出  Sample Output

3

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
这个是用贪心。。。。我觉得,从左边到右边遍历数组,如果数组中的元素比平均值大,就向右边移动几个,如果比平均值小,右边的往这个移动几个,数组的元素经过移动后可以为负数,并不影响结果,等等也算是模拟????????????
C++代码:
#include<iostream>
using namespace std;
const int maxn = 103;
int a[maxn];
int main(){
    int n;
    cin>>n;
    int sum = 0;
    for(int i = 0;i < n; i++){
        cin>>a[i];
        sum += a[i];
    }
    int ave = sum/n;
    int num = 0;
    for(int i = 0;i < n; i++){
        if(a[i] > ave){
            a[i+1] += (a[i] - ave);
            num++;
        }
        else if(a[i] < ave){
            a[i+1] -= (ave - a[i]);
            num++;
        }
    }
    cout<<num<<endl;
    return 0;
}

 

转载于:https://www.cnblogs.com/Weixu-Liu/p/10631578.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/diaoque4795/article/details/101869383

智能推荐

运输层协议概述_报文解析运输层协议_闻人此生的博客-程序员秘密

运输层运输层协议的理解多路分解和多路复用具体的运输层协议对应的多路分解和多路复用的区别运输层协议的理解前面我们介绍了应用层协议(HTTP、SMTP等等),应用层的主要作用是定义了运行在不同端系统上的应用程序进程之间如何相互传递报文(主要是定义了应用进程的数据报文类型、语义等等,但是没有定义报文在不同端系统之间如何运输,运输的问题要依靠下层协议来完成)。接下来我们看一下运输层的基本原理为了准确的了解运输层,我们将运输层和网络层对比起来看运输层:为运行在不同主机上的应用进程之间提供了逻辑通信功能(

使用msvc的cl工具编译程序,以及 “fatal error C1034: iostream: 不包括路径集”等问题解决_powershall fatal error_音柯路德的博客-程序员秘密

首先要安装vs2019(2015or2017都可以)注意:在不同操作系统或不同 VS 版本,下文示例路径可能会稍有不同。添加C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.20.27508\bin\Hostx64\x64加入到环境变量打开powershell或者cmd,输入cl...

C++ OpenCV 基于HSV颜色分割区域、获取目标_opencv根据颜色划分区域_简简单单_*的博客-程序员秘密

C++ OpenCV 基于HSV颜色分割区域、获取目标读取图片// An highlighted blockMat img = imread("E:/Data_image/螺丝-线1/wire.bmp", 3);hsv 颜色范围 //黑 Scalar black_scalarL = Scalar(0, 0, 0); Scalar black_scalarH = Scalar(180, 255, 60); //黄 Scalar yellow_scalarL = Scalar(11

Closed-form expression_tagezor的博客-程序员秘密

 In mathematics, an equation or system of equations(方程组) is said to have a closed-form solution if, and only if, at least one solution can be expressed analytically in terms of a bounded number of cer

愿你一直能够撑下去!_运维中文社区的博客-程序员秘密

题图:来自Jim Strasma今天送给每一位属于这个时代的勇者:愿你一直能撑下去。“愿所有的青春,都可以被温柔对待”。1、这是一位读者妹子也是球友润色的一篇自己写的一首...

小数化分数2_输入一个形如n/d的分数(n是分子d是分母)输出它的小数形式。如果小数有循环节的_raptor.的博客-程序员秘密

小数化分数2Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3668 Accepted Submission(s): 1357 Problem DescriptionRa

随便推点

python中os.system.获取输出信息_Python:运行os.system后如何获取stdout?_weixin_39866974的博客-程序员秘密

我想扩展Windows解决方案。在Python 2.7.5中使用IDLE,当我从文件Expts.py运行以下代码时:import subprocessr = subprocess.check_output('cmd.exe dir',shell=False)print r...在Python Shell中,我仅获得与“ cmd.exe”相对应的输出;“目录”部分将被忽略。但是,当我添加诸如/ K或...

垃圾分类数据集(垃圾图片数据集)_易拉罐数据集_就是求关注的博客-程序员秘密

为了响应垃圾分类的热点问题,抽空收集了一些垃圾的图片。进行垃圾分类的算法预测与分析(模型基本上大家可以尝试采用CNN)图像的垃圾分类数据描述如下:1.玻璃瓶 2.废纸箱 ...

ShellExecute失败,返回ERROR_NO_ASSOCIATION(1155)的处理方案_shell executeex失败_凌乱哥的博客-程序员秘密

DWORD TryShellWithParam(CString strParam){ DWORD dwErrorOld = GetLastError(), dwErrorNew = ERROR_SUCCESS; if (ERROR_SUCCESS != dwErrorOld) { if (ERROR_NO_ASSOCIATION == dwErrorOld) { ShellExe...

基于Ceph分布式存储的Harbor部署方案_harbor 分布式_7*24 工作者的博客-程序员秘密

一、总体技术架构基于单节点部署的Harbor随着存储内容和运行日志的增加,系统的存储空间会趋紧饱和。本文将研究和部署基于Ceph的分布式harbor部署方案。软件安装如下:Docker:version 1.12.6Docker-compose: version 1.23.2Ceph:version 10.2.11Mysql: version 10.2.14(MariaDB)在资源划分...

python中HTML文档转义与反转义方法介绍_Ta来自江湖的博客-程序员秘密

在网页抓取的过程中,往往会遇到一些转义字符,特别是文章内容里面。这种情况很让人反感,那么,应该如何处理这些转移字符,也就是反转义回去呢?unescape()方法python3中使用html包里面的unescape()方法可以解决!源文档反转义回去后当然,与unescape()方法相对应的方法是escape()方法这个方法同理,这里就不在赘述了!...

java 正则 不可见字符_正则表达式匹配不可见字符_weixin_42417004的博客-程序员秘密

在文本中,文字符号分为3种,如表:普通文字符号 A到Z ,a到z,数字0到9,以及不是元字符的其他符号(比如:#、=)元字符 12个被保留做特殊用途的符号:[]\^.|?*+(){}不可见字符 \cx 匹配由 x 指明的控制字符。例如,/cM 匹配一个Control-M或回车符。x 的值必须是A~Z 或 a~z 之一。否则,讲c视为一个原义的"c...

推荐文章

热门文章

相关标签