1320:【例6.2】均分纸牌(Noip2002)

2023-12-07 21:36
文章标签 noip2002 纸牌 均分 6.2 1320

本文主要是介绍1320:【例6.2】均分纸牌(Noip2002),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

【题目描述】
有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)

a[1],a[2]…a[n]
(n堆纸牌,每堆纸牌初始数,l≤a[i]≤10000)。

【输出】
所有堆均达到相等时的最少移动次数。

【输入样例】
4
9 8 17 6
【输出样例】
3

【思路】我们看完题目第一眼想不就是让他们变为平均数嘛,借其他大于平均数的然后移到小于平均数的,如1,9,9,17平均数9,则1向17借8,17-8,就成了9,9,9,9。更直观的说,把平均数假设为0,
则序列改为-8,0,0,8,就是全变为0,。而如何完成呢?可以手动模拟更改后直接贪心。

#include<bits/stdc++.h> 
using namespace std;
int main(){
int n,ans=0,ping,s=0;
cin>>n;
int ab[n];
for(int i=1;i<=n;i++){cin>>ab[i];ans+=ab[i];
}
ping=ans/n;
for(int i=1;i<=n;i++) ab[i]-=ping;
for(int i=1;i<n;i++){if(ab[i]==0) continue;if(ab[i]!=0){ab[i+1]+=ab[i];s++;}
}
cout<<s;return 0;
}

这篇关于1320:【例6.2】均分纸牌(Noip2002)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/467437

相关文章

OpenStack Victoria版——6.2计算节点-Nova计算服务组件

6.2计算节点-Nova计算服务组件 更多步骤:OpenStack Victoria版安装部署系列教程 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版 离线安装部署系列教程(全) OpenStack Train版 离线安装部署系列教程(全) 欢迎留言沟通,共同进步。 文章目录 Nova相关软件

nyoj 1038 纸牌游戏

poj 的一道改编题,说是翻译题更恰当,因为只是小幅度改动。 一道模拟题,代码掌控能力比较好,思维逻辑清晰的话就能AC。 代码如下: #include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct node{char c[5];int rk;char da[5];int nu

纸牌函数生成器

此模板用来生成纸牌类的测试数据,本人手打,不合理或缀余的地方希望大神指出。 T=10000(测试数据组数), t (两摞相等的牌,每摞牌的数量); 每张牌用A,2~9,T,J,Q,K;表示牌面大小; 用S,H,C,D;表示花色。 共52张牌。 #include<stdio.h>#include<time.h>#include<stdlib.h>#include<string.

笔试强训,[NOIP2002普及组]过河卒牛客.游游的水果大礼包牛客.买卖股票的最好时机(二)二叉树非递归前序遍历

目录 [NOIP2002普及组]过河卒 牛客.游游的水果大礼包 牛客.买卖股票的最好时机(二) 二叉树非递归前序遍历 [NOIP2002普及组]过河卒 题里面给的提示很有用,那个马的关系,后面就注意,dp需要作为long的类型。 import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息publ

6.2图的存储及基本操作

6.2.1顺序存储 邻接矩阵法,用一个一维数组存储图中顶点信息,二维数组存储图中边的信息 无向图 1.无向图的邻接矩阵关于对角线对称,可采用压缩存储 2.边数为e,则邻接矩阵中1为2e; 3.第i行or 第i列非零元素之和恰好为顶点i的度数 4.判断是否有边用0,1 5. 有向图 1.关于对角线不对称 2.行表示入度,列表示出度,行+列表示该顶点的度 6.2.2链式存储

6.2排序——选择排序与堆排序

本篇博客梳理选择排序,包括直接选择排序与堆排序 排序全部默认排成升序 一、直接选择排序 1.算法思想 每次遍历都选出最小的和最大的,放到序列最前面/最后面 2.具体操作 (1)单趟 每次遍历都选出最小的和最大的。遍历时,遇到更小的,更新min,遇到更大的,更新max (2)单趟变整体 每趟遍历完之后,begin++,end– 程序结构如下 while(begin<end){//

聚观早报 | 理想汽车OTA 6.2发布;京东大幅上调校招薪资

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 9月3日消息 理想汽车OTA 6.2发布 京东大幅上调校招薪资 哪吒汽车8月销量持续破万 C919国产大飞机首航在即 现代汽车正调整电动汽车战略 理想汽车OTA 6.2发布 近日,理想汽车正式发布OTA 6.2升级推送,AD Pro车型新增基于

kibana中对elasticsearch 6.2.2中的数据增删该查

按条件删除ES中的数据 POST book/novel/_delete_by_query{"query":{"match":{"title": "标题"}}} 按id删除ES中的数据 DELETE book/novel/teQj4HgB7a7ttft0hVBP 新增时设置id POST book/novel/1{"title": "三国演义","author": "罗贯中","

vue flex 布局实现div均分自动换行

vue flex 布局实现div均分自动换行     许久没有更新了,今天才意外发现以前还是没有看懂盒模型,今天才算看懂了,首先我们今天来看一下想要实现的效果是什么?当然适配是必须的,1920 或者 1376都测试过。效果如图所选中区域所示:  一、关于flex布局我建议去看一下http://www.ruanyifeng

【C++ Primer Plus习题】6.2

问题: 解答: #include <iostream>#include <array>using namespace std;#define MAX 10int main(){array<float, MAX> arr;float sum=0;float average=0;int i = 0;int count=0;int bigger = 0;for (i = 0; i <