出現ハッシュテーブル

問題の説明

連続Nを読み出す(0 <N <1,000,000)整数(< = 2 × 10 9

)、多くの時間が表示されますどのように各カウントの計算。

サンプル入力

10
10 30 20 1 1 30 30 20 2 1

サンプル出力

1 1 1 1 2 2 3 2 1 3

制限事項と規則

制限時間:1秒

スペースの制約:128メガバイト

書式#include <cstdioを> 
する#include <cmath>
 使用して 名前空間はstdを、
整数 P = 1000007 [ 1000001 ] = { 0 }、最初の[ 1000008 ] = { 0 }、[次1000001 noat]、[ 1000001 ]。
INT のmain()
{ 
    int型のn; 
    scanf関数(" %のD "、&N)
    以下のためにint型 i = 1 ; iが++; iが<= N 
    { 
        BOOL =見出さ
        scanf関数(" %dの" [I]);
         int型、S = A [i]の%のP;
         のためのINT J =最初の[S];> J 0、J = 次の[J])
        { 
            場合([I] == A [ J])
            { 
                見出さ = ; 
                noat [I] = noat [J] + 1 ; 
                noat [J] ++ ;
                 ブレーク; 
            } 
        } 
        場合(==見出さ){次の[I] =最初の[S];最初の[S] = I;} 
        のprintf(" %dの"、noat [i]は+ 1 ); 
    } 
    戻り 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/hfang/p/11240025.html