天使的果凍 牛客

2021-10-22 16:59:34 字數 1076 閱讀 1617

題目描述

有 個果凍排成一排。第 i個果凍的美味度是 a【i】。

天使非常喜歡吃果凍,但她想把最好吃的果凍留到最後收藏。天使想知道前 x個果凍中,美味度第二大的果凍有多少美味度?

一共有 q次詢問。

注:如果最大的數有兩個以上,預設第二大的等於最大的。例如,【2,4,3,4】 這個序列,第二大的數是4。

輸入描述
第一行乙個正整數n 

第二行n個正整數a[i],用空格隔開。

第三行乙個正整數q

接下來q行,每行乙個正整數x,代表一次詢問。

資料範圍1<=n,q<=1e5,1<=a[i]<=1e9,2<=x<=n

輸出描述
輸出 q行,每行乙個正整數,代表一次詢問,輸出前x個果凍中美味度第二大的值。
示例

輸入

5

1 2 5 3 542

345

輸出
123

5

首先解釋這個題目屬於乙個比賽中的簽到題,然後題主目前比較菜,所以這個題沒做出來,整理筆記,記錄思路。

一開始,我是計畫直接每次詢問後進行判斷的迴圈,但無法通過全部的測試樣例,也不報超時,當時就很疑惑,最終也未發現錯誤。

賽後總結看了看他人的**,發現了更優化的解決方案:多建立乙個陣列,然後將前x個的資料中第二大的那個數存入i-1的位置裡,詢問的時候直接查詢就可以了,當然也可以用樹狀陣列,在此就不再過多贅述了。

#includeusing namespace std;

const int n =1e5+10;//多開闢一點空間,防止陣列越界

int a[n],b[n];//全域性變數宣告自動初始化為0

int main()

else if (a[i]>max2)

b[i]=max2;

} //上面進行判斷前x個資料中第二大分別是多少,並將其存入b[x-1]

int q,x;

cin>>q;

while(q--)

return 0;

}

牛客 能天使的願望

出題人寄給大家的一些閒話 參加了csp j s 2019 的同學,考的都怎麼樣啊?不論是 500 收穫省一而歸的大佬,還是 100 無奈而回的小牛,無論你考的如何,是非成敗轉頭空 不論是退役的前輩還是現役的 戰友 只要你參與了這場比賽,就說明你對oi仍然抱有熱愛,無論成績如何,不變的,永遠是那一顆熱...

美味果凍(牛客練習賽53B)

i 1n j 1ii ij j i 1n j in j j i i sum sum i times lfloor frac rfloor j sum sum j times lfloor frac rfloor i i 1 n j 1 i i ji ji 1 n j i n j ij i接下來只需要...

牛客 獎學金

某小學最近得到了一筆贊助,打算拿出其中一部分為學習成績優秀的前5名學生發獎學金。期末,每個學生都有3門課的成績 語文 數學 英語。先按總分從高到低排序,如果兩個同學總分相同,再按語文成績從高到低排序,如果兩個同學總分和語文成績都相同,那麼規定學號小的同學 排在前面,這樣,每個學生的排序是唯一確定的。...