HDU 4006 The kth great number(multiset(或者)優先隊列)

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   os   

題目

 

詢問第K大的數

 

//這是我最初的想法,用multiset,AC了——好吧,也許是資料弱也有可能

//multiset運用——不去重,邊插入邊排序//iterator的運用,插入的時候,如果是相同的數沒直接放在相同的現有的資料後面的#include<cstdio>#include<cstring>#include<algorithm>#include<set>using namespace std;//#define IN freopen("c:\\Users\\nit\\desktop\\input.txt", "r", stdin)//#define OUT freopen("/home/nit/output.txt", "w", stdout)//int gcd(int a,int b){return b==0?a:gcd(b,a%b);}int main(){    multiset<int>ms;    multiset<int>::iterator it;    int n,k,a;    char q[10];    while(~scanf("%d%d",&n,&k))    {        ms.clear();        int yi=1;        for(int i=0;i<n;i++)        {            scanf("%s",q);            if(q[0]==‘I‘)            {                scanf("%d",&a);                ms.insert(a);                if(yi==0)                {                    if(a>=*it)//如果比現有的第k大的數大,就更新                        it++;                }            }            else            {                if(yi){                    yi=0;                    a=k;                    for(it=ms.end();a!=0;it--,a--);                    printf("%d\n",*it);                }                else                {                    printf("%d\n",*it);                }            }        }    }    return 0;}
View Code

 

/*

後來百度上別人的思路,用優先隊列:

struct Node
{
    int x;
    friend bool operator < (Node a,Node b)
    {
        return a.x > b.x;
    }

};

priority_queue <Node> q;

主要用於重載小於符號,讓小的優先.

輸入時先輸入k個數,輸入k個數後再輸入時需要判斷輸入的數與隊頭的大小關係.

輸入數小於隊頭則不進隊.

輸入數大於隊頭則進隊,彈出隊頭.

保證優先隊列中只有k的元素.

而隊頭是k個元素中最小的元素.

即第k大元素

好吧,我覺得也蠻好的

這是網址:http://www.cnblogs.com/zxotl/archive/2012/09/02/2667820.html

*/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.