藍橋模擬 第十題 晚會節目單

2021-10-05 01:13:48 字數 2723 閱讀 1235

title: 藍橋模擬_第十題_晚會節目單

categories:

頻繁的查詢區間最值對於遍歷來說開銷非常大,所以產生了一種區間最值查詢這種演算法,本文只講st+rmq,st是稀疏矩陣的意思,這種方法要求資料必須是靜態的不能變化的。

有乙個一位陣列(長度為n),頻繁的查詢[s,e]區間的最值。

定義乙個二維陣列st(大小[n,lgn])。st[i][j]表示的是從i開始(包括i)向後2j個元素區間的最值,即區間[i,i+2j-1]的最值,那麼很明顯st[i][0]=a[i](因為[i,i]只有乙個值)。現在我們開始推導遞推式,[i,i+2j-1]可以按照中間分為兩個大小為2(j-1)的區間[i,i+2(j-1)-1]和[i+2(j-1),i+2j-1],那麼[i,i+2j-1]的最值為這兩個區間再求最值,即[i,i+2j-1]=min/max([i,i+2(j-1)-1],[i+2(j-1),i+2j-1])也就是:

st[i][j]=min/max(st[i][j-1],st[i+2^j][j-1])
那麼就可以發現第j列某個元素值的計算只跟它前一列的某兩個值有關,並且剛剛我們已經算好了第一列,由第一列可以計算第二列,由第二列可以計算第三列……那麼要算到哪一列呢?st[i][j]表示的區間是[i,i+2j-1]很明顯i+2j-1<=n-1(n個元素,下標0~n-1)所以就有了建st的模板:

void cal(int a,int n)

-1<2^-1<=2^k-1將k=log_2(e-s+1)代入得

2k−1−1

<2(

int)

k−1<=2

k−1將

k=lo

g2​(

e−s+

1)代入得(e

−s)/

2−1/

2<2(

int)

k−1,

此處2(

int)

k−1是

整數,所

以(e−

s)/2

=<2(

int)

k−

1(e-s)/2-1/2<2^-1,此處2^-1是整數,所以(e-s)/2=<2^-1

(e−s)/

2−1/

2<2(

int)

k−1,

此處2(

int)

k−1是

整數,所

以(e−

s)/2

=<2(

int)

k−1所以s

+2(i

nt)k

−1

>=s

+(e−

s)/2

=(e+

s)/2

(中點)

且e−2

k+

1<=e

−(e+

s)/2

=(e+

s)/2

(中點)

所以s+2^-1>=s+(e-s)/2=(e+s)/2(中點)且e-2^k+1<=e-(e+s)/2=(e+s)/2(中點)

所以s+2(

int)

k−1>=s

+(e−

s)/2

=(e+

s)/2

(中點)

且e−2

k+1<=e

−(e+

s)/2

=(e+

s)/2

(中點)

所以當k=(int)(log2(e-s+1))時,st[s][k],st[e-2^k+1][e]表示的區間一定有交集。所以要求[s,e]區間最值只需要計算min/max(st[s][k],st[e-2^k+1][e]),k=(int)(log2(e-s+1))

【問題描述】

小明要組織一台晚會,總共準備了 n 個節目。然後晚會的時間有限,他只能最終選擇其中的 m 個節目。

這 n 個節目是按照小明設想的順序給定的,順序不能改變。

小明發現,觀眾對於晚會的喜歡程度與前幾個節目的好看程度有非常大的關係,他希望選出的第乙個節目盡可能好看,在此前提下希望第二個節目盡可能好看,依次類推。

小明給每個節目定義了乙個好看值,請你幫助小明選擇出 m 個節目,滿足他的要求。

【輸入格式】

輸入的第一行包含兩個整數 n, m ,表示節目的數量和要選擇的數量。

第二行包含 n 個整數,依次為每個節目的好看值。

【輸出格式】

輸出一行包含 m 個整數,為選出的節目的好看值。

【樣例輸入】

5 33 1 2 5 4

【樣例輸出】

3 5 4

【樣例說明】

選擇了第1, 4, 5個節目。

【評測用例規模與約定】

對於 30% 的評測用例,1 <= n <= 20;

對於 60% 的評測用例,1 <= n <= 100;

對於所有評測用例,1 <= n <= 100000,0 <= 節目的好看值 <= 100000。

st+rmq

#include#include #include#include#include#include#define pp(a,b) cout<>n>>m;

_for(i,0,n-1)

cal(a,n);

int s=0,k=m;

while(k!=0)

}

藍橋杯模擬賽最後一題 晚會節目單 線段樹

明天就省賽了,參加的人少,選出10 作為省一感覺有點難度。希望我能再次得個省一,再去次北京,最後能有個好結果吧。大三就結束了,time flies.問題描述 小明要組織一台晚會,總共準備了 n 個節目。然後晚會的時間有限,他只能最終選擇其中的 m 個節目。這 n 個節目是按照小明設想的順序給定的,順...

2023年春節聯歡晚會節目單

關於2015年春節聯歡晚會,不知道我看錯沒有,有個愛情公寓的小品,演員表裡面居然有陳赫,頓時對2015年春節聯歡晚會感興趣了。最近幾年一到了大年三十晚上都是和親戚聊天或者喝朋友們喝酒,或者和一些侄兒子出去放禮花了,這次一定不能錯過2015年春節聯歡晚會。2015年春節聯歡晚會節目單和演員表如下 1 ...

java模擬題第十題 數字黑洞

size medium 任意乙個5位數,比如 34256,把它的各位數字打亂,重新排列,可以得到乙個最大的數 65432,乙個最小的數23456。求這兩個數字的差,得 41976,把這個數字再次重複上述過程 如果不足5位,則前邊補0 如此往復,數字會落入某個迴圈圈 稱為數字黑洞 比如,剛才的數字會落...