模擬 NOIP 2013 花匠

2021-07-03 10:02:02 字數 1120 閱讀 3352

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

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

條件 a:對於所有的1

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

第二行包含 n 個整數,依次為h_1, h_2,… , h_n,表示每株花的高度。

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

5 5 3 2 1 2

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

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

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

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

計算拐點,注意相鄰兩點相同

var

x,y:array[0..100000]of longint;

i:longint;

n,ans,k,t:longint;

begin

readln(n);

for i:=1

to n do

read(x[i]);

y[1]:=x[1]; y[0]:=1;

for i:=2

to n do

if x[i]<>y[y[0]]

then

begin inc(y[0]); y[y[0]]:=x[i]; end;

for i:=3

to y[0] do

if ((y[i]1])and(y[i-1]>y[i-2]))or((y[i]>y[i-1])and(y[i-1]2]))

then inc(ans);

if ans=0

then ans:=y[0]

else ans:=ans+2;

writeln(ans);

end.

NOIP2013提高組 花匠

花匠棟棟種了一排花,每株花都有自己的高度。花兒越長越大,也越來越擠。棟棟決定把這排中的一部分花移走,將剩下的留在原地,使得剩下的花能有空間長大,同時,棟棟希望剩下的花排列得比較別緻。具體而言,棟棟的花的高度可以看成一列整數h 1,h 2,h n。設當一部分花被移走後,剩下的花的高度依次為g 1,g ...

NOIP2013提高組 花匠

題目描述 花匠棟棟種了一排花,每株花都有自己的高度。花兒越長越大,也越來越擠。棟棟決定把這排中的一部分花移走,將剩下的留在原地,使得剩下的花能有空間長大,同時,棟棟希望剩下的花排列得比較別緻。具體而言,棟棟的花的高度可以看成一列整數h 1,h 2,h n。設當一部分花被移走後,剩下的花的高度依次為g...

NOIP2013 洛谷1970 花匠

題目描述 花匠棟棟種了一排花,每株花都有自己的高度。花兒越長越大,也越來越擠。棟棟決定 把這排中的一部分花移走,將剩下的留在原地,使得剩下的花能有空間長大,同時,棟棟希 望剩下的花排列得比較別緻。具體而言,棟棟的花的高度可以看成一列整數h1,h2 hn。設當一部分花被移走後,剩下的花的高度依次為g1...