第十一屆藍橋杯校內賽 選節目 線段樹解法

2021-10-03 22:15:02 字數 1159 閱讀 1467

選節目

小明要組織一台晚會,總共準備了 n 個節目。然後晚會的時間有限,他只能最終選擇其中的 m 個節目。這 n 個節目是按照小明設想的順序給定的,順序不能改變。

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

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

輸入格式

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

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

輸出格式

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

樣例輸入

5 3

3 1 2 5 4

樣例輸出
3 5 4
樣例說明

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

評測用例規模與約定

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

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

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

線段樹區間返回區間最值及下標

#include using namespace std;

static const int maxn = 1e5 + 5;

static const int mod = 10000;

typedef long long ll;

int a[maxn];

struct node

tr[maxn << 2];

pairbuildmax(int left,int right,int now)

int mid=(left+right)>>1;

pairr1=buildmax(left,mid,now*2);

pairr2=buildmax(mid+1,right,now*2+1);

if(r1.second>=r2.second)

else

}pairquerymax(int left,int right,int now)

}int main()

return 0;

}

第十一屆藍橋杯

問題描述 小藍要為一條街的住戶製作門牌號。這條街一共有 2020 位住戶,門牌號從 1 到 2020 編號。小藍製作門牌的方法是先製作 0 到 9 這幾個數字字元,最後根據需要將字 符貼上到門牌上,例如門牌 1017 需要依次貼上字元 1 0 1 7,即需要 1 個 字元 0,2 個字元 1,1 個...

第十一屆藍橋杯校內模擬賽 種草問題

小明有一塊空地,他將這塊空地劃分為n行m列的小塊,每行和每列的長度都為1。小明選了其中的一些小塊空地,種上了草,其他小塊仍然保持是空地。這些草長得很快,每個月,草都會向外長出一些,如果乙個小塊種了草,則它將向自己的上,下 左 右四小塊空地擴充套件,這四小塊空地都將變為有草的小塊。請告訴小明,k個月後...

第十一屆藍橋杯校內模擬賽部分題解

include using namespace std intmain include using namespace std intmain cout n n0 n1 n2,為使葉子節點數 n0 最多,必須n1最小,設為0,而n0 n2 1,得n2 2019 1 2 1009,所以n0 1010。...