描述
一只松鼠在树林中采摘松果。假定有n棵树,排成一行,每棵树的高度为hi,每棵树的树顶上有一堆松果。
松鼠每一秒可以完成下列三个操作:1)向上或向下爬一个单位;2)采摘树顶上所有的松果;3)横向跳到下一棵树(注意:此时只能跳到下一棵树的同一高度)。
开始时,松鼠在第1棵树的根部(高度为0的地方)。编程计算,松鼠要采摘所有的松果,一共需要多少时间。
输入
第一行为正整数t(≤5),表示数据组数;每组数据中,第一行为正整数n(≤100000),第二行为n个正整数hi(≤100000),分别表示每棵树的高度。
输出
对于每组数据,输出最短时间。
输入样例 1 输出样例 1
2 5 2 14 1 2 5 2 1 2 1 1
本题解法很简单,先创建一个数组,然后加上横向移动和上第一棵树的时间,接下来模拟。
#include<bits/stdc++.h>
using namespace std;
const int N=100005;
int t,n;
long long sum;
int a[N];
int main(){
scanf("%d",&t);
while(t--){
sum=0;
memset(a,0,sizeof(a));
scanf("%d",&n);
for(int i=1;i<=n;i&