题目链接:https://www.luogu.com.cn/problem/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堆纸牌,每堆纸牌初始数,1≤Ai​≤10000)

输出格式

一行:即所有堆均达到相等时的最少移动次数。

输入输出样例

 输入 #1

4
9 8 17 6 输出 #1
3

 #include <bits/stdc++.h>
using namespace std;
const int MAXN=;
int a[MAXN];
int main(){
int n,sum=,ave=;
cin>>n;
for(int i=;i<n;i++){
cin>>a[i]; //读入数据的时候算出平均值
ave+=a[i];
}
ave/=n;
for(int i=;i<n;i++){
a[i]-=ave; //用每一项减去平均值,算出与最后结果相差多少
}
for(int i=;i<n;i++){
if(a[i]!=){
a[i+]=a[i]+a[i+]; //只看眼前最优解,假设只是向右移动加 ,那么移动后a[i+1]值为原来的加前一个数
a[i]==; //如果移动后i位置上面为0达到目的
sum++;
}else{
continue;
}
}
cout<<sum<<endl;
return ;
}

 

贪心训练均分纸牌Noip2002的更多相关文章

  1. 均分纸牌(Noip2002)

    1320:[例6.2]均分纸牌(Noip2002) 时间限制: 1000 ms         内存限制: 65536 KB提交数: 3537     通过数: 1839 [题目描述] 有n堆纸牌,编 ...

  2. 洛谷-均分纸牌-NOIP2002提高组复赛

    题目描述 Description 有 N 堆纸牌,编号分别为 1,2,…, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸 ...

  3. code vs 1098 均分纸牌(贪心)

    1098 均分纸牌 2002年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解   题目描述 Description 有 N 堆纸牌 ...

  4. NOIP2002 均分纸牌

    题一 均分纸牌 (存盘名: NOIPG1) [问题描述] 有 N 堆纸牌,编号分别为 1,2,…, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动. 移牌规则为: ...

  5. 【洛谷p1031】均分纸牌

    [博客园的第一条随笔,值得纪念一下] 均分纸牌[传送门] 洛谷上的算法标签是 这道题是一道贪心题,过了四遍才过(蒟蒻有点废) 第一遍的时候考虑的非常少,只想到了求出平均数→求差值→从左往右加差值: 这 ...

  6. 洛谷 P1031 均分纸牌

    P1031 均分纸牌 这道题告诉我们,对于实在想不出算法的题,可以大胆按照直觉用贪心,而且在考试中永远不要试着去证明贪心算法,因为非常难证,会浪费大量时间. (这就是你们都不去证的理由??) 这道题贪 ...

  7. 【题解】P1440 均分纸牌

    均分纸牌 题目描述: 有\(N\)堆纸牌,编号分别为\(1,2,-,N\).每堆上有若干张,但纸牌总数必为\(N\)的倍数.可以在任一堆上取若干张纸牌,然后移动. 移牌规则为:在编号为\(1\)堆上取 ...

  8. NOIP200205均分纸牌

                                                                  均分纸牌 描述 有 N 堆纸牌,编号分别为 1,2,…, N.每堆上有若干张 ...

  9. wikioi 1098 均分纸牌

    题目描述 Description 有 N 堆纸牌,编号分别为 1,2,-, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸 ...

随机推荐

  1. react-native--->RN发送/接收事件机制

    import { AppRegistry, StyleSheet, Text, View, Platform, NativeAppEventEmitter, DeviceEventEmitter, } ...

  2. ios--->使用@synchronized和dispatch_once实现单例

    使用dispatch_once实现单例 单例实现的两种模式 @implementation XXClass //@synchronized来实现 + (id)sharedInstance { stat ...

  3. 了解EBP指针

    在寄存器里面有很多寄存器虽然他们的功能和使用没有任何的区别,但是在长期的编程和使用中,在程序员习惯中已经默认的给每个寄存器赋上了特殊的含义,比如:EAX一般用来做返回值,ECX用于记数等等.在win3 ...

  4. Codeforces 1249F Maximum Weight Subset (贪心)

    题意 在一颗有点权的树上,选若干个点,使得这些点两两距离大于k,且点权和最大 思路 贪心的取比较大的值即可 将所有点按照深度从大到小排序,如果当前点点权\(a[i]\)大于0,则将距离为k以内的所有点 ...

  5. Codeforces 1017D The Wu(状态压缩+预处理)

    题意: 给你n m q,表示在这一组数据中所有的01串长度均为n,然后给你一个含有m个元素的multiset,之后有q次询问.每次询问会给你一个01串t和一个给定常数k,让你输出串t和multiset ...

  6. 【题解】战争系列-截获密文I

    给你一个最短代码: #include <iostream> #include <string> int main(){ std::string str; std::cin &g ...

  7. [Effective Java 读书笔记] 第三章类和接口 第十八--十九条

    十八条 接口优于抽象类 接口的特点: 1.一个类可以实现多个接口,不能继承多个类(抽象类) 2.接口不能有具体的方法实现,只定义标准类型 骨架类: 即实现一个abstract类来实现接口,提供给其他类 ...

  8. AtCoder Beginner Contest 156

    https://atcoder.jp/contests/abc156/tasks A - Beginner #include <bits/stdc++.h> #define ll long ...

  9. 一键安装php5.6.40脚本(LAMP环境)

    #!/bin/bash #安装依赖软件 yum -y install libxml2-devel curl-devel libjpeg libjpeg-devel libpng libpng-deve ...

  10. Node.js的__dirname,__filename,process.cwd(),./的一些坑

    参考博客:https://github.com/jawil/blog/issues/18