裝飾大樓 NOIP2015模擬11 3

2021-07-11 09:22:46 字數 2705 閱讀 5323

其實和這東西只是扯上邊而已,完全沒有考演算法…………..

———————————–切入正題————————-

際資訊學奧林匹克競賽將要在日本召開了。為了歡迎全世界的選手們,委員會決定將從機場到宿舍沿路的大樓裝飾起來。根據某著名設計師的設計,做裝飾的大樓從機場到宿舍的方向必須高度嚴格遞增。也就是說,如果做裝飾的大樓從機場開始高度順次為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 結合...