CF265B 题解

· · 题解

题目传送门

题目大意:

解题方案:

当站在第 i 棵树上时,先爬到树顶,吃松果。再判断:如果下一棵比这一棵矮,就往下爬。否则就直接去下一颗树。

注意: 因为循环到第 n 棵树时会找不到第 n+1 棵树,所以只循环到 n-1 即可(第 n 棵最后算)。

代码:

#include <iostream>
using namespace std;

int n,a[100005];
int main(){
    int h=0,ans=0;
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    for(int i=1;i<=n-1;i++){//只循环到n-1!
        ans+=(a[i]-h),ans++,h=a[i];
        if(a[i+1]<a[i]){//如果比这棵矮
            ans+=(a[i]-a[i+1]),ans++,h=a[i+1];
        }
        else if(a[i+1]>a[i]){//如果比这棵高
            ans++;
        }
        else{//与这棵树相等
            ans++;
        }
    }
    ans+=(a[n]-h+1);//最后算第n棵树
    cout<<ans<<endl;
    return 0;
}

本蒟蒻第一篇题解,请多关照!QwQ!