明天就省賽了,參加的人少,選出10%作為省一感覺有點難度。希望我能再次得個省一,再去次北京,最後能有個好結果吧。大三就結束了,time flies.
【問題描述】
小明要組織一台晚會,總共準備了 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。
#include
using
namespace std;
int n,m;
int data[
100005];
struct point
;point tree[
400005];
void
pushup
(int k)
void
build
(int k,
int a,
int b)
int m=
(a+b)/2
;build(2
*k,a,m)
;build(2
*k+1
,m+1
,b);
pushup
(k);
}int
query
(int k,
int a,
int b)
int m=
(tree[k]
.l+tree[k]
.r)/2;
if(b<=m)
else
if(a>m)
else
}int
main()
build(1
,1,n);
int pos1=
1,pos2=n-m+1;
//尺取法,在乙個區間內求最大值
int pos_m=0;
while
(pos1while
(pos2<=n)
cout
}
藍橋模擬 第十題 晚會節目單
title 藍橋模擬 第十題 晚會節目單 categories 頻繁的查詢區間最值對於遍歷來說開銷非常大,所以產生了一種區間最值查詢這種演算法,本文只講st rmq,st是稀疏矩陣的意思,這種方法要求資料必須是靜態的不能變化的。有乙個一位陣列 長度為n 頻繁的查詢 s,e 區間的最值。定義乙個二維陣...
2023年藍橋杯省賽A組第一題 迷宮
題目 x星球的一處迷宮遊樂場建在某個小山坡上。它是由10x10相互連通的小房間組成的。房間的地板上寫著乙個很大的字母。我們假設玩家是面朝上坡的方向站立,則 l表示走到左邊的房間,r表示走到右邊的房間,u表示走到上坡方向的房間,d表示走到下坡方向的房間。x星球的居民有點懶,不願意費力思考。他們更喜歡玩...
藍橋杯 十二屆第一次模擬賽題E
在乙個序列 a a 1 a 2 a n 中,如果 i,j 滿足 i j 且 a i a j 則稱為乙個逆序對。例如 3,2,2,1 中包含 6 個逆序對。請問在 87,39,35,1,99,10,54,1,46,24,74,62,49,13,2,80,24,58,8,14,83,23,97,85,3...