歡樂暑假線上編程比賽第四題:分配糖果

題目詳情

有n個小朋友站成一排(編號從0到n-1),每個小朋友有一個rating值,存放在ratings數組中。老師需要給他們分

配糖果,每個小朋友至少需要一顆糖果,對於任意相鄰的兩個小朋友i和i+1,rating值大的必須比rating值小的分

配的糖果多(rating相同的沒必要分配一樣多的糖果)。

請計算最少需要多少顆糖果,才能完成上述分配。

輸入格式:

多組數據,每組數據第一行是一個正整數n。

接下來n行,每行有1個正整數,表示每個小朋友的rating值。所有整數都不超過100000。

輸出格式:

每組數據一行,包括一個正整數,表示做少需要的糖果數。


參考思路:V字形序列就是嚴格單調遞增然後嚴格單調遞減的序列,可以沒有前面的嚴格單調遞增或者後面的嚴格

單調遞減。對於任何一個數組序列,都是由多個V字形序列鏈接而成的,對於每個V字形序列,除了左右最高點以

外,每個端點分配的糖果數只與它距離最低點的距離有關,最低點分配一個糖果,然後左右遞增,對於左最高點,

它應該分配的糖果數爲前一個V字形裏面應該得的糖果數和該V字形裏面應該得的糖果數的較大值,右最高點同理。

具體實現起來有多種方法。


通過了的源代碼(c++):

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章