花匠棟棟種了一排花,每株花都有自己的高度。花兒越長越大,也越來越擠。棟棟決定把這排中的一部分花移走,將剩下的留在原地,使得剩下的花能有空間長大,同時,棟棟希望剩下的花排列得比較別緻。
具體而言,棟棟的花的高度可以看成一列整數h_1, h_2, … , h_n。設當一部分花被移走後,剩下的花的高度依次為g_1, g_2, … , g_m,則棟棟希望下面兩個條件中至少有乙個滿足:
條件 a:對於所有的1g_2i-1,且g_2i > g_2i+1;
條件 b:對於所有的1
注意上面兩個條件在m = 1時同時滿足,當m > 1時最多有乙個能滿足。
請問,棟棟最多能將多少株花留在原地。
5 5 3 2 1 2
3本題為noip2013提高組day2第二題,本人認為該題應該是第一題的難度……之所以放在第二題,也許是因為條件寫得醜了點怕別人看不清。看清條件這道題就很簡單了。
這個條件的意思就是讓你找轉折點的數量即g(i-1)g(i+1)或g(i-1)>gi
首先可以肯定的是,當花的數目為1的時候,可以直接輸出1。首尾兩株花都肯定是可以留下的,因此,當花的數目大於等於2時,我們可以將答案初始化為2,然後加上轉折點的數目即可,**沒超過25行……
var a:array[0..100001] oflongint;
w,n,i,ans:longint;
begin
readln(n);
a[0]:=-maxlongint;
for i:=1
to n do
begin
inc(w);
read(a[w]);
if a[w]=a[w-1] then
dec(w);
end;
if w=1
then
begin
writeln(1);
halt;
end; ans:=2;
for i:=2
to w-1
doif ((a[i]>a[i-1])and(a[i]>a[i+1]))or((a[i]1])and(a[i]1])) then
inc(ans);
writeln(ans);
end.
題解 bzoj3289 Mato的檔案管理
mato同學從各路神犇以各種方式 你們懂的 收集了許多資料,這些資料一共有n份,每份有乙個大小和乙個編號。為了防止他人偷拷,這些資料都是加密過的,只能用mato自己寫的程式才能訪問。mato每天隨機選乙個區間 l,r 他今天就看編號在此區間內的這些資料。mato有乙個習慣,他總是從檔案大小從小到大看...
NOIP2013花匠超多方法的題解
原題見洛谷 首先介紹一種我在做題的時候學到的一種空間複雜度為o 1 的解法 首先使用f1,f2分別記錄兩種不同的序列。就是一種為兩邊高中間低和一種為中間高兩邊低的序列。f1,f2的初始值都設成1 我們可以易證選擇了1第一盆其結果一定不會變差 手動滑稽 用x來記錄上一盆,h來記錄當前盆滿足一下幾個條件...
CodeVS 1032題解報告
codevs 1032 題解報告 dfs 數論 剪枝tianmaxingkong 問題 question 數學家們喜歡各種型別的有奇怪特性的數。例如,他們認為945是乙個有趣的數,因為它是第乙個所有約數之和大於本身的奇數。為了幫助他們尋找有趣的數,你將寫乙個程式 掃瞄一定範圍內的數,並確定在此範圍內...