程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> CF 265B(行道樹簡化版)

CF 265B(行道樹簡化版)

編輯:C++入門知識

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;   }  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved