羅区P5375データ構造の問題の問題解決の[[THUPC2019]組み合わせ

タイトルは非常に高い理論に見えますが、実際にはそれほど複雑ではありません。あなただけは、それぞれ、プロセスキュー、スタック、ヒープと細根大根スタックをシミュレートする必要があります。

コード内の詳細とコメント。

$の\ RMコード$

#プラグマGCC最適化(2 
#ザ含む <ビット/ STDC ++ H.>
 使用して 名前空間STD、
キュー < INT > QUE、
スタック < INT > STK; 
PRIORITY_QUEUE < INT > ヒープ1; 
PRIORITY_QUEUE < int型、ベクトル< INT >、大< INT >> ヒープ2;
 // C ++ STLライブラリの使用は、4つのデータ構造が定義されています:キュー、スタック、ヒープと細根大きなルートスタック
int型のmain(){ 
    のiOS :: sync_with_stdio(0)、cin.tie(0 );
     int型 N;ブールフラグ[ 5 ]。
    memsetの(FLAG、はsizeof (フラグ))。
    cinを >> N。
    ながら(N-- ){
         int型OPT、X; 
        CIN >>オプト>> X;
        もし(OPT == 1 ){
             場合(フラグ[ 1 ])que.push(X)。
            もし(フラグ[ 2 ])stk.push(X)。
            もし(フラグ[ 3 ])heap1.push(X)。
            もし(フラグ[ 4 ])heap2.push(X)。
            //ブラックボックスは、一時的なデータ構造であってもよく、OPTが1である場合、X挿入した場合
             // 挿入動作がここでシミュレートされる。
        }
         {
             IFフラグに(que.empty())[ 1 ] = falseにIF(STK。空の())フラグに[ 2 ] = falseにIF [(heap1.empty())フラグで3 ] = falseにIF [(heap2.empty())フラグで4 ] = falseに;
             // データ構造は、すでに空の場合、フラグを直接変更
            IF(フラグ[ 1 ]){
                 IF(que.front()!= X)フラグ[1 ] = 
                que.pop(); 
            } 
            であれば(フラグ[ 2 ]){
                 場合(!stk.top()= X)フラグ[ 2 ] = 
                stk.pop(); 
            } 
            であれば(フラグ[ 3 ]){
                 場合(!heap1.top()= X)フラグ[ 3 ] = 
                heap1.pop(); 
            } 
            であれば(フラグ[ 4 ]){
                 場合(!heap2.top()= X)フラグ[ 4 ] = 
                heap2.pop(); 
            } 
            // アナログ削除。
        } 
    } 
    のためのINT I = 1 ; I <= 4 ; ++ I)
        フラグ[I]において、プット(?" はい"):プット(" なし")。// 出力
    戻り 0 ; 
}

 

ます。https://www.cnblogs.com/Xray-luogu/p/11006400.htmlで再現

おすすめ

転載: blog.csdn.net/weixin_34185320/article/details/93306831
おすすめ