题目大意:
给你一个序列 h,表示一排树的高度,你每秒可以完成下列事件之一:
- 将自己的高度改变 1。
- 在树顶停留不动。
- 跳到下一棵树的同一高度,要求下一棵树的高度不低于你现在的高度。
最开始你位于第一棵树的底下(高度为 0)输出在每一棵树的树顶都停留 1s 需要的最短时间。
AC:
#include<iostream>
using namespace std;
int main()
{
int n, i, sum=0;
int a[100005];
cin >> n;
for(i=0;i<n;i++)
cin >> a[i];
sum+=a[0]+2*n-1;
for(i=1;i<n;i++)
{
if(a[i]<a[i-1])
sum+=a[i-1]-a[i];
else if(a[i]>a[i-1])
sum+=a[i]-a[i-1];
}
cout << sum << endl;
return 0;
}