羅区P1801ブラックボックス(PQ)

ポータル


問題解決のためのアイデア

中央の質問や疑問ような、そうでない場合は、その質問の中央値下さい見て- 中央値

この質問とそのさまざまな質問はこれです:

デジタルルート質問キュースタックの多数総数の半分であることを、数学的知識に従って計算され、出力は、すべてを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 }

おすすめ

転載: www.cnblogs.com/yinyuqin/p/12104431.html