デイリー質問day10パンチ
分析
トライ木テンプレートの問題だけのような単純な挿入とクエリを使用
あなたがトライを学びたいのであれば、情報オリンピックにパス高層ピースP82を参照してください
1の#include <iostreamの> 2の#include <CStringの> 3の#include <cstdioを> 4の#include <アルゴリズム> 5 使って 名前空間STD。 6 INTの N、M、CNT = 0 。 7 列 [ 10001 ]。 8 INTの CH [ 500001 ] [ 105 ]。 9 ブール BO [ 500001 ]、書籍[ 500001 ]。 10インラインint型リード() 11 { 12 INT X = 0 。 13 ブール F = 1 。 14 チャー C = GETCHAR()。 15 のために(!; isdigit(C); C = GETCHAR())場合(C == ' - ')、F = 0 。 16 のために(; isdigit(C); C = GETCHAR())x =(x << 3)+(X << 1)+ C- ' 0 ' 。 17 であれば(F) 、リターンX。 18 リターン 0 - X。 19 } 20 空隙インサート(文字列X) 21 { 22 INT LEN = x.size()。 23 INT U = 1 。 24 のために(int型 I = 0 ; iがLEN <I ++は) 25 { 26 int型のC = Xを[I] - [ A ' 。 27 もし(CH [U] [C] == 0)CH [U] [C] = ++ CNT。 28 U = CH [U] [C]。 29 } 30 BO [U]は= 真。 31 } 32 int型チェック(文字列Y) 33 { 34 INT LEN = y.size()。 35 INT U = 1 。 36 のために(int型 I = 0 ; iがLEN <I ++は) 37 { 38 INT C = Y [I] - [ A ' 。 39 もし(CH [U] [C] == 0)リターン 2 。 40 U = CH [U] [C]。 41 } 42 であれば(BO [U] =!真)リターン 2 。 43 他に あれば(BO [U] == 真&&ブック[U] == 0 ) 44 { 45 書籍[U] = 1 。 46 リターン 1 。 47 } 48 そう であれば(BO [U] == 真 &&ブック[U] == 1 ) 49 { 50 リターン 3 。 51 } 52 } 53 のint main()の 54 { 55 N = 読み取ります()。 56 のために(int型 i = 1 ; iが<= N iが++ ) 57 { 58 CIN >> [i]は、 59 インサート([I])。 60 } 61 、M = )(読み取ります。 62 文字列のx; 63 のためには、(int型 I = 1 ; I <= M; iは++ ) 64 { 65 CIN >> Xと、 66 INT SE = チェック(X) 67 もし(SE == 1)COUT << " OK " << てendl; 68 であれば(SE == 2)COUT << " 間違い" <<endl; 69 であれば(SE == 3)COUT << " REPEAT " << ENDL。 70 } 71 リターン 0 。 72 }
論文をギャングしてください(とにかく、私はそれが論文を何を意味するのか知りません)