18 Vijos P1845 花匠(貪心)

2021-07-22 08:53:55 字數 1495 閱讀 1619

p1845花匠

accepted

標籤:noip提高組2013

花匠棟棟種了一排花,每株花都有自己的高度。花兒越長越大,也越來越擠。棟棟決定把這排中的一部分花移走,將剩下的留在原地,使得剩下的花能有空間長大,同時,棟棟希望剩下的花排列得比較別緻。

具體而言,棟棟的花的高度可以看成一列整數h1, h2, … , hn。設當一部分花被移走後,剩下的花的高度依次為g1, g2, … , gm,則棟棟希望下面兩個條件中至少有乙個滿足:

條件 a:對於所有的

1<

i2 1g2

i>g2

i−1 g2i>g2i−1

,且g2

i>g2

i+1 g2i>g2i+1

條件 b:對於所有的

1<

i2 1g2

ii−1 g2i,且g2

ii+1 g2i

注意上面兩個條件在m = 1時同時滿足,當m > 1時最多有乙個能滿足。

請問,棟棟最多能將多少株花留在原地。

輸入的第一行包含乙個整數 n,表示開始時花的株數。

第二行包含 n 個整數,依次為h1, h2,… , hn,表示每株花的高度。

輸出一行,包含乙個整數 m,表示最多能留在原地的花的株數。

5 

5 3 2 1 2

3

每個測試點1s。

對於 20%的資料,n ≤ 10;

對於 30%的資料,n ≤ 25;

對於 70%的資料,n ≤ 1000,0 ≤ hi ≤ 1000;

對於 100%的資料,1 ≤ n ≤ 100,000,0 ≤ hi ≤ 1,000,000,所有的h_i隨機生成,所有隨機數服從某區間內的均勻分布。

noip 2013 提高組 day 2

1)條件a,第i盆花比左右兩邊的花高

2)條件b,第i盆花比左右兩邊的花矮

3) 兩個條件在m = 1時同時滿足,當m > 1時最多有乙個能滿足。這句話很容易理解錯,其實就是只有一盆花時,即算符合條件a的,也算符合條件b的,要算兩個

4)顯然如果有兩盆花,結果也是2

5)要去重,所以開始輸入資料時,和前一盆花高度一樣的就不儲存

6)要輸入的資料很多,用scanf();

#include #include #define n 100002

using namespace std;

int n,ans=2,h,a[n],t;

int main()

for(int i=2;imax(a[i-1],a[i+1])||a[i]noip做題記錄(提高組)

18章 表驅動方法 (1)

表驅動法是一種程式設計模式 scheme 從表裡面查詢資訊而不使用邏輯語句 if和else 根據 大全中的描述,凡是能通過邏輯語句來選擇處理的事物,都可以通過查表來選擇。但是對於簡單的邏輯,則不宜使用表驅動法,表驅動發更加適合複雜的邏輯。適當情況下使用表驅動法的幾個好處 生成的 簡單 容易修改維護 ...

jdk1 8記憶體分析 1

分為堆區和非堆區,以下對下圖進行分析和記錄 堆區分為young區,和old區,yong又分為2大塊,s區 from和to 和eden區,s區是同樣大小的兩部份,同一時間點下,只會有一塊有資料 主要是取代1.8之前的方法區,metaspace 分為ccs和codecache2份,ccs 壓縮類空間 在...

Linux學習筆記(1月18日)

伺服器的選擇 1.ecs 2.傳統idc 如何選擇idc機房 1.考慮機房和辦公地點的距離,方便維護 2.看機房的穩定性 看運營商的實力 電信 聯通 移動以及一些提供服務的第三方運營公司 考察機房的硬體實力 機房投入使用的時間 溫度濕度等環境控制裝置的效能以及ups 3.考慮成本 機櫃 頻寬 託管等...