Noip 2013 Day2 T1 积木大赛(block)

【题目描述】

春春幼儿园举办了一年一度的“积木大赛”。今年比赛的内容是搭建一座宽度为的大厦,大厦可以看成由块宽度为1的积木组成,第??块积木的最终高度需要是??? 。

在搭建开始之前,没有任何积木(可以看成块高度为 0 的积木)。接下来每次操作,小朋友们可以选择一段连续区间[, ??],然后将第块到第??块之间(含第 L 块和第 R 块)所有积木的高度分别增加1。

小M是个聪明的小朋友,她很快想出了建造大厦的最佳策略,使得建造所需的操作次数最少。但她不是一个勤于动手的孩子,所以想请你帮忙实现这个策略,并求出最少的操作次数。

【输入】

输入文件为 block.in

输入包含两行,第一行包含一个整数,表示大厦的宽度。

第二行包含个整数,第??个整数为?

?? 。

【输出】

输出文件为 block.out

仅一行,即建造所需的最少操作数。

这道题并没有什么难度,只是我以为很难,题目中提到区间内增加一个值,我很自然的想到了什么线段树啊,树状数组,离线前缀和啊。果然,我又想多了。还好自己反应过来了。正解的话贪心就好了。

我们假设每一次搭建操作都是一条删除线,那么答案就是最少的删除线条数。

当hi<hi+1时,显然必须增加删除线,去补充多出来的hi+1−hi部分;

当hi>hi+1时,有些删除线就必须要终止,接下来只有hi+1条删除线可以存在。

于是只需要计算增加的删除线总数即可,时间复杂度为O(n)。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 #include <cmath>
 5 #include <cstring>
 6 #define INT_MAX_ 0x7fffffff
 7 #define LONG_MAX_ 0x7fffffffffffffffll
 8 #define pi acos(-1)
 9 #define N 100010
10 #define M 1010
11 using namespace std;
12
13 inline int read()
14 {
15     int data=0,w=1;
16     char ch=0;
17     while(ch!=‘-‘ && (ch<‘0‘ || ch>‘9‘)) ch=getchar();
18     if(ch==‘-‘) w=-1,ch=getchar();
19     while(ch>=‘0‘ && ch<=‘9‘) data=data*10+ch-‘0‘,ch=getchar();
20     return data*w;
21 }
22
23 inline void write(int x)
24 {
25     if(x<0) putchar(‘-‘),x=-x;
26     if(x>9) write(x/10);
27     putchar(x%10+‘0‘);
28 }
29
30 int n;
31 int pre_house,all_of_house,nowVal;
32
33 int main()
34 {
35     freopen("block.in","r",stdin);
36     freopen("block.out","w",stdout);
37
38     n = read();
39     for(int i = 1; i <= n; i++)
40     {
41         nowVal = read();
42         if(pre_house < nowVal) all_of_house += nowVal - pre_house;
43         pre_house = nowVal;
44     }
45     write(all_of_house);
46
47     return 0;
48 }
时间: 2024-08-08 09:41:37

Noip 2013 Day2 T1 积木大赛(block)的相关文章

noip 2013 luogu P1969 积木大赛

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

NOIp 2013 Day2 解题报告

NOIp 2013 Day2 解题报告 1.   积木大赛 每次只要选取连续最大的一段区间即可. 继续归纳可得,答案为∑i=1nmax{0,hi-hi-1} 复杂度O(N) 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<algorithm> 6 using namespace std; 7 8 //variable/

Codevs 3578 无线网络发射器选址== NOIP 2014 Day2 T1

3578 无线网络发射器选址 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 白银 Silver 题目描述 Description 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的 129 条东西向街道和 129 条南北向街道所形成的网格状,并且相邻的平行街道之间的距离都是恒定值 1 .东西向街道从北到南依次编号为0,1,2…128,南北向街道从西到东依次编号为 0,1,2…128. 东西向街道和南北向街

NOIP 2014 Day2 T1 无线网络发射器选址

1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<queue> 5 #include<stack> 6 #include<vector> 7 #include<algorithm> 8 #include<string> 9 #include<cstring> 10 #include<iomanip>

NOIP 2014 Day2 T1 无线网络发射器

#include<iostream> #include<cmath> #include<cstdlib> #include<cstdio> #include<algorithm> #include<string> #include<cstring> #include<vector> #include<deque> #include<stack> using namespace std;

NOIP 2013 提高组 day2 积木大赛 找拐点

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

NOIp 2013 #1 积木大赛 Label:有趣的模拟

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

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

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

noip 2013 积木游戏

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