ポータル
問題解決のためのアイデア
中央の質問や疑問ような、そうでない場合は、その質問の中央値下さい見て- 中央値
この質問とそのさまざまな質問はこれです:
デジタルルート質問キュースタックの多数総数の半分であることを、数学的知識に従って計算され、出力は、すべてを2の数を出力します。
この質問は、キュー内で取得されたヒープの根の最初の数字の大規模な番号(i)は、i、iを1増加し、出力位置をGETヒット出力指定されたget関数を持つたびに。
- 基本的にはどのように異なっていませんでした。
メンテナンスやヒープの小規模または大規模なルートルートヒープヒープトップへ注意を払うことを忘れてはいけない大きなヒープ上の小さなヒープルートまたはルートに置かれている現在の要素を決定するために比較されます。
ACコード
1の#include <iostreamの> 2の#include <cstdioを> 3の#include <キュー> 4 使用して 名前空間をSTD。 5 のconst int型 MAXN = 200005 ; 6 INT M、N、G [MAXN]。 7 長い 長い[MAXN]。 8 PRIORITY_QUEUE < 長い 長い > Q1。 9 PRIORITY_QUEUE < 長い 長い、ベクトル< 長い 長い >、大きな< 長い 長い >> Q2。 10 のint main()の 11 { 12 CIN >> M >> N。 13 のための(INTは私= 1のscanf(I ++; I <= M)" %のLLD "、および[I])。 14 のために(INT iは= 1 ; iが<= N; I ++)のscanf(" %dの"、&G [I])。 15 INT CNT = 1 。 16 のために(INT iは= 1 ; iが<= N; I ++ ){ 17 のために(; CNT <= G [i]は、CNT ++ ){ 18 であれば(q1.empty()|| [CNT <= q1.top ())q1.push([CNT])。 19 他q2.push([CNT])。 20 であれば(q1.size()> I){ 21 q2.push(q1.top())。 22 q1.pop()。 23 } 24 } 25 ながら(q1.size()< I){ 26 q1.push(q2.top())。 27 q2.pop()。 28 } 29 のprintf(" %のLLD \ n " 、q1.top())。 30 } 31 リターン 0 。 32 }