# El significado de los problemas
Mantiene una colección de cadenas, que comprende dos operaciones:
. 1) "LX" Insertar una cadena x
2) "Q X" preguntar cuántas veces al aparezca cadena en el conjunto
n funcionamiento, cada consulta tiene una salida, una sola línea de salida
# Explicaciones
Título de la plantilla
operación gama op
* correspondiente a un solo carácter op
op cadena de caracteres que corresponde
1 #include <bits / STDC ++ h.> 2 usando espacio de nombres std; 3 const int N = 1e5 + 10 ; 4 int n; 5 int trie [N] [ 26 ], cnt [N], tot = 1 ; 6 inline void inserto ( Char * str) { 7 int p = 1 ; 8 para ( int i = 0 ; str [i]; i ++ ) { 9 int ch = str [i] - ' un ' ; 10 si (! trie [p] [ch]) 11 trie [p] [ch] = ++ tot; 12 p = trie [p] [ch]; 13 } 14 cnt [p] ++ ; 15 } 16 inline int consulta ( Char * str) { 17 int p = 1 ; 18 para ( int i = 0 ; str [i]; i ++ ) { 19 int ch = str [i] - ' un ' ; 20 si (! Trie [p] [ch]) 21 volver 0 ; 22 p = trie [p] [ch]; 23 } 24 de retorno cnt [p]; 25 } 26 int main () { 27 cin >> n; 28 , mientras que (n-- ) { 29 Char op [ 2 ]; 30 de char x [N]; 31 cin >> >> op x; 32 Si (* op == ' I ' ) { 33 inserto (x); 34 } 35 más { 36 tribunal << consulta (x) << endl; 37 } 38 } 39 }