鏈結:
題目
有乙個長度為n的陣列,值為 a[i], 牛牛想找到陣列中第 k 小的數。比如1 2 2 3 4 6
中,第 3 小的數就是2.
牛牛覺得這個遊戲太簡單了,想加一點難度,現在牛牛有 m 個操作,每個操作有兩種型別。
x 1
代表操作一,給陣列中加乙個元素 x 。(0 ≤ x ≤ 1e9)
2
代表操作二,查詢第 k 小的數。如果沒有 k 個數就輸出−1。
思路
一開始想著把所有資料放在multiset裡,既能維持有序,取元素也不是很麻煩,結果t掉了。
後來翻ac**的時候看到乙個非常好玩的思路:
建立乙個優先佇列q,數值按照由大到小排序,然後將q的長度鎖死在k。
這句話是什麼意思呢?我們看一下樣例:
5 4 3當我們將資料存入優先佇列q裡時,我們先看一下q的長度:1 2 3 4 5
若小於k則放入q中;若等於k,這時再放入元素x,需要看一下q.top()與該元素的大小關係。
比如樣例中,放入前3個元素後,q.top()應該為3。當放入4時,我們需要看一下q.top()是否大於x。
3<4,所以無論後面的數如何,4一定不是第3小的那個。
如果我們向佇列中再放入乙個2,3>2,所以就當前而言,無論後面的數如何,3一定不是第3小的那個。
理解了上面這道題就簡單了,看**吧。
伊莉莎白!
}}《如果想戀愛就應該去努力爭取而不是繼續狗叫???》
牛客小白月賽 30
並查集或者最小生成樹 並查集 include include include include using namespace std typedef long long ll const int maxn 2e 5 int f maxn struct node e maxn bool cmp nod...
牛客小白月賽13 補題(ACDG)
a 通過已經給的 打表找規律,偶數輸出 1,奇數輸出1 includeusing namespace std int main void huaj ll a,ll b int main qianz 0 0 houz n 1 0 qianz 1 mp 1 houz n mp n for i 2 i n...
牛客的小白月賽24補題
沒注意負數取模 呀呀呀呀,打腦殼 保證取模後的結果為正數 x mod mod mod 思路1.挨個嘗試肯定超時 2.就是把平方項展開 a2 b2 2ab 每個平方項的出現次數n 1次 每個2ab形式的和 最後一定注意取余為正數 戳我試試看 include include include includ...