资源限制
时间限制:1.0s 内存限制:128.0MB
问题描述
THU幼儿园举办了一年一度的“积木大赛”。今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木组成,第i块积木的最终高度需要是hi。
在搭建开始之前,没有任何积木(可以看成n块高度为0的积木)。接下来每次操作,小朋友们可以选择一段连续区间[L, R],然后将第L块到第R块之间(含第L块和第R块)所有积木的高度分别增加1。
kAc是个聪明的小朋友,他很快想出了建造大厦的最佳策略,使得建造所需的操作次数最少。但他不是一个勤于动手的孩子,所以想请你帮忙实现这个策略,并求出最少的操作次数。
输入格式
输入包含两行,第一行包含一个整数n,表示大厦的宽度。
第二行包含n个整数,第i个整数为hi。
输出格式
仅一行,即建造所需的最少操作数。
样例输入
5
2 3 4 1 2
样例输出
5
数据规模和约定
1<=n<=100000
0<=hi<=10000
思路:从第一个数字开始判断吧;
第二个数字如果比第一个数字大,就将操作数更新,加上两者差值;
如果比其小的话,往下判断
#include<stdio.h>
int main()
{
int a,b,c=0,n,sum=0;
scanf("%d",&n);
for(a=1;a<=n;a++)
{
scanf("%d",&b);
if(b>c)
{
sum=sum+b-c;
c=b;
}
else c=b;
}
printf("%d\n",sum);
return 0;
}