ural 1306. Sequence Median(優先順序隊列 priority_queue用法)

來源:互聯網
上載者:User

最近做的ural的題目總是各種錯,看瞭解題報告都是自己沒學過的玩意,有點受打擊,不過ural的題目品質還是挺好的,多被虐虐有益健康。

這一題要是用數組直接超記憶體,用優先順序隊列做,剛接觸這個,學習一下優先順序隊列。

c++stl標頭檔聲明<queue>, <queue>包括queue和priority_queue, priority_queue就是優先順序隊列。預設使用vector容器實現。優先順序隊列容器總是把優先順序最高的元素放在隊列最前方來保持隊列的有序性。假如一次push 1,2,3,4,5,6,則優先順序隊列中儲存的是6,5,4,3,2,1。

priority_queue支援的操作有:q.empty(), q.size(), q.pop(0), q.top(), q.push(item).

用法參考http://www.cplusplus.com/reference/queue/priority_queue/

 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <queue>                        //for priority_queue 5 using namespace std; 6 int main() 7 { 8     priority_queue<unsigned int> ipq; 9     int n;10     scanf("%d", &n);11     unsigned int t;12     for (int i = 1; i <= n / 2 + 1; ++i)13     {14         scanf("%u", &t);15         ipq.push(t);16     }17     int tn = n / 2 + 2;18     while (tn <= n)19     {20         scanf("%u", &t);21         ipq.push(t);22         ++tn;23         ipq.pop();24     }25     if (n & 1)                             //if n is odd26         printf("%u.0\n", ipq.top());27     else28     {29         int t1 = ipq.top();30         ipq.pop();31         printf("%.1f", (double)(t1 + ipq.top()) / 2);32     }33     return 0;34 }

還有兩點需要注意的:1.結果的格式,如果中位元是整數也要輸出.0,保留一位小數。2資料類型,雖然每個數都小於2^31-1,但是可能會出現中間有兩個數都是INT_MAX的情況,例如n=4且四個數都是2^31-1,中間兩個數相加時就會超出INT_MAX輸出-1.

程式的思路就是:先把前n/2+1個元素加入優先順序隊列,此時優先順序隊列遞減排列,以後每加入一個元素之後刪除對頭最大元素,當所有元素入隊後,由於最大元素不斷被刪除,最後對頭元素就是中位元。(分別處理n為奇數偶數的情況)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.