トピック:
多くの商品は、N(0 <= N <= 1E6)で動作し、あります
加数の操作:品物の数が×印に入力されました
クエリ:X財のために入力した番号がマークされているかどうかを問い合わせ
アイデア:
このトピックは非常に簡単ですが、ハッシュアルゴリズムを試してみたい、手書きのハッシュ最も重要なことは、適切に紛争を処理することです。
コード:
#include <ビット/ STDC ++。H> に#define INF 0x3f3f3f3f の#define FRE()freopenは( "in.txt"、 "R"、STDIN) の#define FRO()freopenは( "out.txtを"、 "W"、STDOUT )使用して名前空間はstdを、 typedefの長い長いLL。 const int型 MAXN = 1E6 + 10 。 const int型 MOD = 1E6 + 7 。 INT [MAXN];融点 ボイド addNum(INT X) { int型、T = X。 X = X%MOD。 一方、(真) { 場合(![X] MP) { MP [X] = Tと、 返します。 } もし(!MP [X] = T)// 处理冲突 X =(X + 1)%のMAXN。 他の リターン; } } ブールクエリ(INT X) { int型、T = X。 X = X%MOD。 しばらく(真) { 場合(MP [X]!)を返す 偽。 もし(MP [X]!=T) X =(X + 1)%のMAXN。 他に 返す 真。 } } int型のmain() { int型N; scanf関数(" %のD "、&N) 一方、(N-- ) { int型、O、X、IDX。 scanf関数(" %dの%のD "、&O&X)。 もし(O == 0 ) { addNum(X + 1 )。 } 他 { もし(クエリ(X + 1))のprintf(" はい\ N " ); 他のprintf(" なし\ nを" ); } } 戻り 0 。 }