CODE[VS] 1098 均分纸牌 ( 2002年NOIP全国联赛提高组)
arr[i] :表示每个牌堆的纸牌的数目 平均值 :当纸牌数都一样多时,纸牌的数目从左向右考虑,每堆纸牌有三种状态: 1) arr[i] == 平均值,考虑arr[i+1] 2) arr[i] < 平均值,此时由arr[i+1]移给arr[i]纸牌。 => 移动纸牌数:(平均值 - arr[i])张注:考虑此时,arr[i]缺牌,那么i右边的牌堆必然多牌,无论哪堆多牌,必然有由arr[i+1]将牌移给arr[i]的过程。3) arr[i] > 平均值,此时由arr[i]移给arr[i+1]纸牌。 => 移动纸牌书:(arr[i] - 平均值)张注:考虑此时,arr[i]多牌,那么i右边的牌堆必然缺牌,无论哪堆缺牌,必然有由arr[i]将牌移给arr[i+1]的过程。每个状态下,所做的动作都是必然需要的,没有做无用功,所以结果最优。更具体的理解,请点击这里
1 //#define HOME 2 #include <iostream> 3 #include <cstdio> 4 #include <cstdlib> 5 #include <cmath> 6 #include <string> 7 #include <algorithm> 8 #include <cstring> 9 #include <set> 10 #include <utility> 11 #include <locale> 12 #include <ctime> 13 using namespace std; 14 const int INF = 0x3f3f3f3f; 15 const int MaxN = 110; 16 17 int N, arr[MaxN], sum; 18 19 void Solve() 20 { 21 int ave = sum / N; 22 int cnt = 0; 23 for (int i = 0; i < N - 1; ++i) 24 { 25 if (arr[i] == ave) continue; 26 if (arr[i] < ave) 27 { 28 arr[i + 1] -= (ave - arr[i]); 29 ++cnt; 30 }else 31 { 32 arr[i + 1] += (arr[i] - ave); 33 ++cnt; 34 } 35 } 36 cout << cnt << endl; 37 } 38 39 int main() 40 { 41 cin >> N; 42 sum = 0; 43 for (int i = 0; i < N; ++i) 44 { 45 cin >> arr[i]; 46 sum += arr[i]; 47 } 48 Solve(); 49 50 51 #ifdef HOME 52 cerr << "Time elapsed: " << clock() / CLOCKS_PER_SEC << " ms" << endl; 53 #endif 54 return 0; 55 }
转载于:https://www.cnblogs.com/shijianming/p/4833964.html
CODE[VS] 1098 均分纸牌 ( 2002年NOIP全国联赛提高组)相关推荐
- 1099 字串变换 2002年NOIP全国联赛提高组
1099 字串变换 2002年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 已知有两个字串 A ...
- 棋盘型动态规划 之 CODE[VS] 1169 传纸条 2008年NOIP全国联赛提高组
/* 这道题要解决两个问题1)状态和状态方程2)怎么保证每走一步,所形成的路径不相交,以保证最后生成的完整路径不相交.(1)状态: dp[i][j][k][l] = 小渊传递的纸条到[i][j]的位置 ...
- Codevs 1010 过河卒 2002年NOIP全国联赛普及组
1010 过河卒 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 传送门 题目描述 Description 如图,A 点有一个过河卒 ...
- 1009 产生数 2002年NOIP全国联赛普及组
009 产生数 2002年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给出一个整数 n(n<10^ ...
- 过河 2005年NOIP全国联赛提高组(离散化+dp)
1105 过河 2005年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 在河上有一 ...
- 聪明的质监员 2011年NOIP全国联赛提高组(二分+前缀和)
聪明的质监员 2011年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 小 T 是一名质量监督员, ...
- Codevs 1066 引水入城 2010年NOIP全国联赛提高组
1066 引水入城 2010年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 传送门 题目描述 Description 在一个遥远的国度 ...
- 选数 2002年NOIP全国联赛普及组
题目描述 Description 已知 n 个整数 x1,x2,-,xn,以及一个整数 k(k<n).从 n 个整数中任选 k 个整数相加,可分别得到一系列的和.例如当 n=4,k=3,4 个整 ...
- 【2002年NOIP全国联赛普及组】过河卒
描述 棋盘上 A 点有一个过河卒,需要走到目标 B 点.卒行走的规则:可以向下.或者向右.同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点.因此称之为" ...
最新文章
- C#语言学习思维导图
- UA OPTI512R 傅立叶光学导论17 离散傅立叶变换简介
- 通俗易懂的SpringBoot教程---day2---Springboot配置文件
- Python——rrdtool模块的安装
- 关于.dll' could not be found 的问题以及解决方案
- 51nod 1050 循环数组最大子段和【环形DP/最大子段和/正难则反】
- css 水印_自制腾讯视频去除水印Chrome插件!厉害吧!
- python找不到解释器_为什么pycharm找不到python解释器
- 任务栏文件资源管理器打开特别卡
- 继承中各代码块的执行顺序
- 微软日语输入法键盘输入对应不上 解决方法
- 华为云从入门到实战 | 云容器服务
- 【Spring Data JPA】JPA常用注解
- Win10 上使用 MSYS 开发 Android NDK 程序
- java8获取以秒单位的时间戳
- C++进阶学习(二)----C到C++II
- 学习笔记(5):第01章-互联网的概述(历史发展+技术发展+常见应用)-互联网的接入(手把手教你调试ADSL宽带技术)
- 用GRUB2来实现——坎特伯雷项目 The Canterbury Project
- sql server查询不显示结果_仅凭网上查询结果显示邮件由行政机关签收,能证明行政机关一定收到了当事人的申请吗?...
- T 字头 大型国际新能源公司 急聘 待遇优厚
热门文章
- 从别的网站摘抄的,挺有用的
- 百度智呼吸 html5,手机百度 iBreath智呼吸
- 查询天地图访问配额 https://console.tianditu.gov.cn/api/statistics
- 真是搞不懂原始套接字SOCK_RAW和AF_PACKET
- mysql——数据库设计中int与varchar中的长度含义
- yaml语法三大规则
- .net socket与完成端口、异步发送相关研究
- 发布一套IOCP框架
- hosts文件分发其他机器
- 【linux所有命令——复习】