codevs 3288 积木大赛

3288 积木大赛 (2013年NOIP全国联赛提高组)

时间限制: 1 s
空间限制: 128000 KB
题目等级 : 钻石 Diamond

题目描述 Description

春春幼儿园举办了一年一度的“积木大赛”。今年比赛的内容是搭建一座宽度为 n 的大厦,大厦可以看成由 n 块宽度为1的积木组成,第i块积木的最终高度需要是hi。 在搭建开始之前,没有任何积木(可以看成 n 块高度为 0 的积木)。接下来每次操作,小朋友们可以选择一段连续区间[L,R],然后将第 L 块到第 R 块之间(含第 L 块和第 R 块)所有积木的高度分别增加1。 小 M 是个聪明的小朋友,她很快想出了建造大厦的最佳策略,使得建造所需的操作次数最少。但她不是一个勤于动手的孩子,所以想请你帮忙实现这个策略,并求出最少的操作次数。

输入描述 Input Description
输入包含两行,第一行包含一个整数 n,表示大厦的宽度。
第二行包含 n 个整数,第i个整数为hi。
样例输入 Sample Input
5
2 3 4 1 2

样例输出 Sample Output
5

数据范围及提示 Data Size & Hint
其中一种可行的最佳方案,依次选择 [1,5] [1,3] [2,3] [3,3] [5,5]
对于 30%的数据,有1 ≤ n ≤ 10;
对于 70%的数据,有1 ≤ n ≤ 1000;
对于 100%的数据,有1 ≤ n ≤ 100000,0 ≤ hi ≤ 10000。

这道题大致有两种算法

  1. 差分法
  2. 思考法

本题很明显的告诉我们可以用差分来做(小朋友们可以选择一段连续区间[L,R],然后将第 L 块到第 R 块之间(含第 L 块和第 R 块)所有积木的高度分别增加1),下面附上代码。

#include <bits/stdc++.h>
using namespace std;
int a[100001],cf[1000],n;
int main()
{int count=0;cin>>n;for (int i=1;i<=n;i++){cin>>a[i];}for (int i=1;i<=n;i++)         //求差分数组 {c[i]=a[i];         			//codevs测试点2是极限情况100000,若把c[1]=a[1]写在外面会超时,我也不知道为啥. cf[i]=a[i]-a[i-1];}for (int i=1;i<=n;i++){while (cf[i]!=0)			//过滤已完成的值 {int right=n+1,j,sum=0;for (j=i;j<=n;j++){sum+=cf[j];if (sum==0){right=j;break;}}if (right==n+1)         //如果right的值为n+1,说明整个数组都进行了加和操作,因此只对i进行反向差分. {cf[i]--;				//反过程 count++;}else{cf[i]--;               //反过程 cf[right]++;count++;}}}printf("%d",count);return 0;
}

下面是参考别人的思路,仔细想想确实很巧妙,于是就加进来了。

#include <bits/stdc++.h>
using namespace std;
int a[100001],n;
int main()
{int count=0;cin>>n;for (int i=1;i<=n;i++){cin>>a[i];}count=a[1];for (int i=1;i<n;i++){if (a[i]<a[i+1]){count+=a[i+1]-a[i];}}printf("%d",count);return 0;
}

就这几行,可以这样来理解。
第一个就是目前的方法数,如果后面的项比前面的项要小,那么我在进行加1的时候空间选择完全可以覆盖此项(最少步数),但如果后面的数比前面要大,明显的L-R空间选取被打断了,不能进行了,那么a[i+1]项就需要另外的(a[i+1]-a[i])步来完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

定义变量类型

typedef unsigned long DWORD; typedef int BOOL; typedef unsigned char BYTE; typedef unsigned short WORD; typedef float FLOAT; typedef void far *LPVOID; typedef int INT; typedef unsigned int UINT; 变量的“匈牙利表示法”&#xff1a; lp为前缀&#xff1a;指针类…

.net core中不支持GB2312编码的问题

今天在用core实现读取文件内容时出现了中文乱码的问题&#xff0c;特此记录下。代码如下&#xff1a;static void Main(string[] args){string path "F:\\1.txt";StreamReader sr new StreamReader(path, Encoding.Default);String line;while ((line sr.ReadLine…

java中Scanner类的使用

1.导入包 java.util.Scanner; 代码 import java.util.Scanner;&#xff08;不要忘记分号&#xff09; 2.创建Scanner对象 代码&#xff1a;Scanner inputnew Scanner(System.in); 3.创建变量接受输入 代码&#xff1a; int ainput.nextInt(); 显然&#xff0c;此代码只能输入一…

脑机融合技术的哲学审思

来源&#xff1a;《科学技术哲学研究》2020年第6期作者&#xff1a;张学义&#xff08;东南大学哲学与科学系&#xff09;潘平平&#xff08;华为南京所&#xff09;庄桂山&#xff08;东南大学成贤学院&#xff09;国家社科基金重大项目“问题哲学理论前沿与理论创新研究”(18…

“哪里有人喜欢孤独,不过是害怕失望罢了”———村上春树《东尼泷谷》观后感...

每个人发自内心的感受&#xff0c;都是孤独的&#xff0c;哪怕表面多么欢快。 ——By 浪漫Chopin 配乐&#xff1a; http://music.163.com/song/498210/?userid539620943 东尼的一生都是孤独的&#xff0c;生下来父亲带他到处流浪&#xff0c;对他不管不问。 他自己做饭&…

windows定时计划备份MySql

使用 MySql 的 mysqldump 将数据库文件备份成 sql 文件。 Windows下备份 本地的数据库环境 MySql 安装环境&#xff1a;C:\MySql 数据库名称&#xff1a;bbs root root 数据库备份目的地&#xff1a; D:/Data_BackUp echo off set "Ymd%date:~,4%%date:~5,2%%date:~8,2%&q…

“新一代城市大脑建设与发展“专家研讨会

2021年6月城市大脑全球标准研究组成员在国家级核心期刊发表论文&#xff08;6月末出版&#xff09;&#xff0c;阐述了关于城市大脑的最新进展&#xff0c;基于城市大脑全球标准研究&#xff0c;形成新一代城市大脑的“1N”模式建设方案和九个实施步骤&#xff1b;突出了直接应…

进程的控制——获取系统进程信息

获取系统进程 ToolHelp函数&#xff1b;CreateToolhelp32Snapshot函数获取当前系统内执行的进程拍快照&#xff08;Snapshot&#xff09;&#xff0c;即获得进程列表&#xff1b;Process32First函数和Process32Next函数遍历列表&#xff1b;快照头文件&#xff1a;#include<…

PHP随笔---简述var_dump()、print_r()、echo()

var_dump() 能打印出类型 print_r() 只能打出值 echo() 是正常输出… 需要精确调试的时候用 var_dump(); 一般查看的时候用 print_r() 另外 &#xff0c; echo不能显示数组 其余2个可以…

Science: 四万张大脑图像首次揭示人脑白质的基因基础

来源&#xff1a;青牛帮脑白质&#xff0c;是大脑内部神经纤维聚集的地方&#xff0c;由于其区域比细胞体聚集的大脑表层颜色浅&#xff0c;故名脑白质。人到了大约二十岁时&#xff0c;白质才会在不同脑区逐渐发育完全&#xff0c;而其生长的时机与成熟程度&#xff0c;会影响…

PHP 中错误控制符@

HP中提供了一个错误控制运算符“”&#xff0c;对于一些可能会在运行过程中出错的表达式时&#xff0c;我们不希望出错的时候给客户显示错误信息&#xff0c;这样对用户不友好。于是&#xff0c;可以将放置在一个PHP表达式之前&#xff0c;该表达式可能产生的任何错误信息都被忽…

tensorflow框架

基于Tensorflow的NN&#xff1a;用张量表示数据&#xff0c;用计算图搭建神经网络&#xff0c;用会话执行计算图&#xff0c;优化线上的权重&#xff08;参数&#xff09;&#xff0c;得到模型。 张量&#xff08;tensor&#xff09;:多维数组&#xff08;列表&#xff09; …

IMT-2030(6G)推进组发布《6G总体愿景与潜在关键技术》白皮书

来源&#xff1a;中国信通院CATCT编辑&#xff1a;蒲蒲当前&#xff0c;新一轮科技革命和产业变革突飞猛进&#xff0c;随着5G商用的大规模部署&#xff0c;全球业界已开启对下一代移动通信&#xff08;6G&#xff09;的探索研究。日前&#xff0c;IMT-2030(6G)推进组&#xff…

Win32程序执行单元-多线程

多线程&#xff1a;主线程在运行过程中&#xff0c;可以创建新的线程&#xff0c;这些线程可以共享进程的资源&#xff0c;如全局变量&#xff0c;句柄等&#xff1b;线程函数定义&#xff1a;DWORD WINAPI ThreadProcess(LPVOID lpParam); WINAPI 宏名&#xff0c;在windef.h有…

PHP中foreach遍历循环的使用(两种用法)

foreach在循环遍历数组时是很便利的&#xff0c;PHP提供了两种方法&#xff1a;1. 输出不显下标 2.输出显示下标 (注意&#xff1a; foreach不支持消除错误信息) 题目如图 输出不显下标&#xff1a; foreach($ students as $key) { echo " $key"."< br/>…

【博客园2018总结帖】21天,在Github上获取 6300 star

大家好&#xff0c;我是程序员小吴。12月初我在GitHub上上传了一个仓库&#xff0c;到现在为止获取了 6300 star&#xff0c;下面和大家聊聊关于项目启动的初衷、面临的一些困难和未来的计划。 「LeetcodeAnimation」的萌芽&#xff1f; 在刷Leetcode的过程中&#xff0c;遇到很…

多线程-线程同步

CreateThread函数与_beginthreadex 函数的联合使用&#xff1a; 为了多线程同步的需要&#xff0c;使每个线程必须具有唯一的状态&#xff0c;CreateThread还不能灵活使用&#xff0c;需要使用C/C运行期库&#xff1b;CreateThread函数参数与_beginthreadex函数对应的&#xff…

最强原创综述!当强化学习邂逅组合优化

『运筹OR帷幄』转载来源&#xff1a;运筹OR帷幄作者&#xff1a;黄含驰未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff08;城市&#xff09;云脑研究计划&#xff0c;构建互联网&…

7-2 银行排队问题之单窗口“夹塞”版 (30 分)

PTA 排队“夹塞”是引起大家强烈不满的行为&#xff0c;但是这种现象时常存在。在银行的单窗口排队问题中&#xff0c;假设银行只有1个窗口提供服务&#xff0c;所有顾客按到达时间排成一条长龙。当窗口空闲时&#xff0c;下一位顾客即去该窗口处理事务。此时如果已知第i位顾客…

数学认知中的具身进路及其哲学观初探

来源&#xff1a;《科学技术哲学研究》2020年第6期作者&#xff1a;王东&#xff08;北京工商大学马克思主义学院&#xff09;吴彤&#xff08;清华大学人文学院&#xff09;国家社会科学基金重大课题“科学实践哲学与地方性知识研究”(13&ZD068)从数学思想史以及数学哲学的…