1. 程式人生 > >HDU 4006 The kth great number(優先佇列)

HDU 4006 The kth great number(優先佇列)

由於只有插入操作,所以不很複雜的資料結構,優先佇列就可以了,每次保持佇列中有k個元素,這樣取出的頭必然是第k大

程式碼:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;

int n, k;

int main() {
    while (~scanf("%d%d", &n, &k)) {
        char s[2];
        int x;
        priority_queue<int, vector<int>, greater<int> > Q;
        while (n--) {
            scanf("%s", s);
            if (s[0] == 'I') scanf("%d", &x), Q.push(x);
            else {
                while (Q.size() > k) Q.pop();
                printf("%d\n", Q.top());
            }
        }
    }
    return 0;
}


相關推薦

HDU 4006 The kth great number優先佇列)

由於只有插入操作,所以不很複雜的資料結構,優先佇列就可以了,每次保持佇列中有k個元素,這樣取出的頭必然是第k大 程式碼: #include <cstdio> #include <cstring> #include <algorithm>

hdu 4006 The kth great number優先佇列

Problem Description Xiao Ming and Xiao Bao are playing a simple Numbers game. In a round Xiao Ming c

HDU 4006: The kth great number

cout show ace c++ out mil while -a tex The kth great number[email protected]/* */ Sycamore [email protected]/* */ 8/8/2017 #i

hdu 4006 The kth great number 很複雜的線段樹,至少對於我來說,但也學會了很多!!!!!!!!!!

這道題是網路預選賽上做的,當時就是超時,後來知道是線段樹,從時間複雜度來說用線段樹先是將所用的點記錄然後nlog的快排,之後查詢就是logn了,軟和不用線段樹,之後的查詢是On的複雜度,要是來一堆大資料那就必然超時了 廢話不多說了,先將記錄的所用點排序,在離散化,建樹,將資

HDU4006 The kth great number————棧和佇列優先佇列

Xiao Ming and Xiao Bao are playing a simple Numbers game. In a round Xiao Ming can choose to write down a number, or ask Xiao Bao w

The kth great number HDU 4006第K大)

題面: Xiao Ming and Xiao Bao are playing a simple Numbers game. In a round Xiao Ming can choose to write down a number, or ask Xiao Bao what the kth g

The kth great number multiset應用找第k大值)

for begin urn mes etc when ++ multi size The kth great number Xiao Ming and Xiao Bao are playing a simple Numbers game. In a round Xiao

HDOJ4006 The kth great number --優先佇列求第k大數

The kth great number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) Total Submission(s): 7004    Acc

HDU 6208 The Dominator of Strings ——青島網絡賽,AC自動機)

while using else .cn 清空 mat 一點 自動 ring   最長的才可能成為答案,那麽除了最長的以外全部insert到自動機裏,再拿最長的去match,如果match完以後cnt全被清空了,那麽這個最長串就是答案。事實上方便起見這個最長串一起丟進去也無

hdu 5381 The sum of gcd線段樹+gcd)

const HR LV oid pac vector AR statistic modify 題目鏈接:hdu 5381 The sum of gcd 將查詢離線

HDU - 5542 The Battle of ChibiLIS+樹狀數組優化)

possible ould eof namespace chan panel arm int sam The Battle of Chibi Cao Cao made up a big army and was going to invade the whole Sout

hdu 4347 The Closest M Points kd tree 模板題)

題目:http://acm.hdu.edu.cn/showproblem.php?pid=4347 #include<bits/stdc++.h> using namespace std; #define sq(x) (x)*(x) const int maxn=6e4+10;

暢通工程續HDU 1874 迪傑斯特拉+優先佇列

                                              暢通工程續 Time Limit: 3000/1000 MS (Java/Others)    Memory

HDU - 5381 The sum of gcd離線處理 + 線段樹)

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=5381 題目大意:給出一個長度為 n 的陣列a,現在有q次詢問,每次詢問給出一個區間 [L,R],要你求出這個區間內所有子區間的gcd之和,即求。 題目思路:根據gcd的性質,以L為起點,終點小於

hdu 2444 The Accomodation of Students 判斷是否是二分圖,最大匹配)

小記:這題主要是判斷給定的圖是否是二分圖匹配,如果是的,求出最大匹配。這題資料比較水。 思路:求圖是否可以二分,可以使用dfs染色,或者bfs染色,或者並查集, 這裡我使用的是dfs染色,比較簡單的一種。 程式碼: #include <iostream> #

HDU 3861 The King’s Problemtarjan縮點+最小路徑覆蓋:sig-最大二分匹配數,經典題)...

The King’s Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 4080    Accepted Submission(s):

HDU 3943 —— K-th Nya Number數位DP,二分答案)

給定X和Y的值,一個數字用十進位制表示,對於數位4出現恰好X次,7恰好Y次的數字稱為nya數。 然後給P和Q, 後面是一系列查詢, 每個查詢K就是在區間(P,Q]上找到第K個nya數,不存在則輸出Nya!(= = 這是尖叫的意思麼) 因為數字的範圍比較大,又是跟數位有關,

2017多校聯合第八場/hdu 6136Death Podracing優先佇列+迴圈連結串列)

> During the Trade Federation invasion of Naboo, Anakin Skywalker won the Boonta Eve Classic on Tatooine, securing his freedom from a life of slavery.

hdu 5381 The sum of gcd線段樹等差數列區間修改+單點查詢)

題意: 給出一個數組a,叫你每次詢問如下等式的值。 f(l,r)=∑ri=l∑rj=igcd(ai,ai+1....aj) 解析: 思考了很久終於理解了學長的思路 給你一個序列,這個序列的子序列gcd的個數不會超過logN個(N為

HDU 4004 The Frog's Games 二分貪心)

二分答案,每次貪心儘量跳遠去判斷即可 程式碼: #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N = 5