B. Roadside Trees (Simplified Edition) time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output 從西向東有 n 棵樹,編號 1 到 n ,樹頂有nuts.第 i 棵樹高 hi. Liss 想吃所有的 nuts. Liss 在第1棵樹的高度為1的地方. Liss 做下列任意一件事情耗時1s: 向樹的上方或下方移動1格. 吃樹頂的 nut . 向東邊那棵樹跳(不能向西跳),高度不變,注意Liss不能從高的地方往低跳。 算出Liss吃掉所有nuts最短時間. Input 第一行為 n (1 ≤ n ≤ 105) . 接下來n行為序列 hi (1 ≤ hi ≤ 104) . Output 算出Liss吃掉所有nuts最短時間. Sample test(s) input 2 1 2 output 5 input 5 2 1 2 1 1 output 14 注意不能往西跳(一開始以為可以,看題仔細啊!) [cpp] #include<cstdio> #include<iostream> #include<cstdlib> #include<cstring> #include<cmath> #include<functional> #include<algorithm> #include<cctype> using namespace std; #define MAXN (100000+10) #define MAXHi (10000+10) int n,h[MAXN]; int main() { www.2cto.com cin>>n; for (int i=1;i<=n;i++) cin>>h[i];h[0]=1; int ans=0; for (int i=1;i<=n;i++) ans+=abs(h[i]-h[i-1]); /* int hmin=h[n]; for (int i=n-1;i>=1;i--) { ans=min(ans,ans-abs(h[i]-h[i-1])-abs(h[i+1]-h[i])+abs(h[i-1]-h[i+1])+n-i+abs(hmin-h[i])+abs(hmin-h[n])); } */ ans+=2*n; cout<<ans<<endl; return 0; }