其實和這東西只是扯上邊而已,完全沒有考演算法…………..
———————————–切入正題————————-
際資訊學奧林匹克競賽將要在日本召開了。為了歡迎全世界的選手們,委員會決定將從機場到宿舍沿路的大樓裝飾起來。根據某著名設計師的設計,做裝飾的大樓從機場到宿舍的方向必須高度嚴格遞增。也就是說,如果做裝飾的大樓從機場開始高度順次為hi,那麼必須滿足hi是遞增的。
為了使盡量多的裝飾品發揮光澤,做裝飾的大樓希望越多越好。擔任挑選被裝飾的大樓的工作的joi君,考慮到了大樓的主人可能會有「希望自己的大樓被裝飾起來,而且,為了讓大樓很顯眼,希望這棟大樓是所有裝飾起來的大樓中離宿舍最近的一棟」這種無理要求。
從機場到宿舍沿路共有n棟大樓,從機場開始的第i棟大樓稱作大樓i,n棟大樓的高度彼此不同。joi君為了滿足各種各樣的要求,決定事先計算出「如果裝飾大樓i,並且讓大樓i是所有裝飾起來的大樓中離宿舍最近的一棟,那麼選出的大樓最多有ai個」這樣的東西。joi君計算出了整數列a1,a2,…,an,然後發給了日本資訊學奧林匹克競賽委員會的k理事長。
然而,k理事長收到的資訊只有乙個長度為n-1的整數列b1,b2,…,b[n-1]。k理事長不知道大樓高度的情報,因此沒有辦法計算出ai。
k理事長認為,joi君一定是漏寫了乙個數。考慮到以a1,a2,…,an為a陣列的大樓的高度大小關係可能有很多種,k理事長想知道,刪掉乙個數後能得到b1,b2,…,b[n-1]的合法的a陣列一共有多少種?
然而實際上,joi君有可能並沒有漏寫乙個數而是出現了其他的書寫事故,因此無解也是有可能的。
————————–分割———————-
第一行乙個正整數n,表示從機場到宿舍沿路的大樓數量。
接下來n-1行,第i行(1<=i<=n-1)為bi,表示k理事長收到的第i個數的值。
樣例輸入:4 1 1 2
輸出一行乙個正整數,表示可能的a陣列的數量。
樣例輸出:5
——————刨解題目———————-
給你乙個缺了乙個數的上公升子串行,求還原後的序列的個數。
——————-分割————————-
1.有解情況
插入位置前方已經取遍了1~k,該位置便可以取1~k+1,加入答案即可。當然要注意判重。
2.無解情況:有兩種。
第一種便是序列中某一位置的數比前面序列裡最大的數大了2以上,即a[i]-max(a[1~i-1])>2。
第二種便是序列中某一位置的數比前面序列裡的數大了2,且這種情況出現的兩次或以上。
3.判重:一般方法會炸,優化的方法有很多,自己想想就可以了。
———分割———
附**(free pascal版本)
var
a:array[0..1000005]of longint;
maxn:array[0..1000005,1..2]of longint;
bz:boolean;
i,k,maxm,x,y,n:longint;
ans:int64;
begin
assign(input,'building.in'); reset(input);
assign(output,'building.out'); rewrite(output);
readln(n);
for i:=1
to n-1
dobegin
readln(a[i]);
if a[i]-maxn[i-1,1]>2
then
begin
writeln(0);
close(input); close(output);
halt;
end;
if a[i]-maxn[i-1,1]=2
then
begin
if bz then
begin
writeln(0);
close(input); close(output);
halt;
end;
bz:=true;
x:=i;
end;
if a[i]>maxn[i-1,1] then
begin
maxn[i,1]:=a[i];
maxn[i,2]:=i;
endelse maxn[i]:=maxn[i-1];
end;
a[n]:=maxlongint div
2; if bz then
begin
writeln(x-maxn[x-1,2]);
close(input); close(output);
halt;
end;
for i:=1
to n do
begin
if a[i]-maxn[i-1,1]=2
then ans:=ans+i-maxn[i-1,2]
else
begin
ans:=maxn[i-1,1]+1+ans;
if maxn[i-1,1]+1>=a[i] then dec(ans);
end;
end;
writeln(ans);
close(input); close(output);
end.
就這樣吧。
NOIP2015模擬11 3 裝飾大樓
給出乙個序列a,ai表示對於乙個h序列來講,以i結尾的lis的長度。h中的數兩兩不等。現在你知道了a刪去乙個數之後的序列b 未知刪掉哪位 求a序列有多少種。a 10 6 好多細節呀!不爽,懶得打題解。可以發現,對於乙個序列a,它滿足條件的前提就是,對於每乙個ai,都存在乙個aj j i 滿足aj 1...
NOIP模擬 裝飾大樓
國際資訊學奧林匹克競賽將要在日本召開了。為了歡迎全世界的選手們,委員會決定將從機場到宿舍沿路的大樓裝飾起來。根據某著名設計師的設計,做裝飾的大樓從機場到宿舍的方向必須高度嚴格遞增。也就是說,如果做裝飾的大樓從機場開始高度順次為h1,h2,h3,那麼必須滿足h1 看完題之後表示沒有看懂題目 看了十分鐘...
NOIP2015模擬11 5 旅行
經過觀察,可以發現題目有乙個比較不錯的性質 1 一條合法的路徑必須由兩條路徑組成,一條是奇數,另一條是偶數。所以我們可以先把每乙個點到達根節點的路徑求出來,深度為奇數的點放進乙個a aa陣列裡,偶數的放進b bb陣列裡,再給他們分別進行排序。然後進行兩兩結合,先把a陣列裡的所有數跟b1b b1 結合...