羅区P2580と彼は問題の間違った解決策を命名開始しました

デイリー質問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 }

論文をギャングしてください(とにかく、私はそれが論文を何を意味するのか知りません)

おすすめ

転載: www.cnblogs.com/handsome-zyc/p/11517573.html