程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++-一道題目,請大家幫幫忙,謝謝了

c++-一道題目,請大家幫幫忙,謝謝了

編輯:編程綜合問答
一道題目,請大家幫幫忙,謝謝了

【問題描述】
  小山田心子是一只快樂的小白兔,某天她看到一座彩虹橋,彩虹橋長度為N,每個單位都有一個美觀度,小山田心子一開始在單位1,並取走單位1的美觀值,接下來她會在從下一格開始到N中選擇一個最大美觀度的單位跳過去(如果美觀值相同取前面的),然後取走美觀值,直到她走到N,請輸出她取走的美觀度之和。
【輸入格式】
  第一行一個整數N(10<N<1000),接下來一行N個整數表示彩虹橋每個單位的美觀度。
【輸出格式】
  小山田心子取過的美觀值之和。

【輸入樣例1】
  5
  5 4 3 2 1
【輸出樣例1】
  15

【輸入樣例2】
  10
  5 9 4 6 10 8 7 5 4 7
【輸出樣例2】
  37

【樣例解釋】
  樣例1:(兔子一開始在單位1(取走美觀度5),然後在2到5找最大,找到單位2的美觀度4…一直找到單位N,美觀度是15);
  樣例2:(兔子先取單位1,在2到10中找最大找到單位5的美觀度10,然後在6到10找最大找到單位6的美觀度8,然後在7到10找最大找到單位7的美觀度7,接下來在單位8到10找到單位10的美觀度7,答案即為5+10+8+7+7=37)。

【數據范圍】
  N=200000(注意這裡)
其中一個 n=200000 的數據點 http://pan.baidu.com/s/1o6qrs2A
感謝大神

最佳回答:


雖然是從前往後跳,但是感覺求值應該從後來算。你看哈,從最後一位開始,肯定是可以取到的,然後將這位作為flag,向前搜索。如果比flag小,則略過,如果大於flag,則計入總和,並更新flag。如此往前搜索,直到第一位,當然第一位也計入總和。這樣復雜度也就是O(1)。題主琢磨下是否可行?

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