1 条题解
-
0
#include <bits/stdc++.h> using namespace std; string s; int n, m; // son[i][0'a'~25'z'] 存 i 号节点的某个字母的子节点 // tag[i] 存 i 号节点有几个单词 // tot 存当前节点数量 const int MAXNODE = 50 * 10000; // 长度*单词数:最坏节点个数 int son[MAXNODE + 5][26], tag[MAXNODE + 5], tot = 1; int main() { cin >> n; for (int i = 1; i <= n; ++i) { cin >> s; int u = 1; // 1号节点: '' for (int j = 0; j < s.length(); j++) { int c = s[j] - 'a'; if (!son[u][c]) son[u][c] = ++tot; u = son[u][c]; } tag[u] = 1; } cin >> m; while (m--) { cin >> s; int u = 1; for (int j = 0; j < s.length(); ++j) { int c = s[j] - 'a'; u = son[u][c]; if (!u) break; } if (tag[u] == 1) { tag[u] = 2; cout << "OK\n"; } else if (tag[u] == 2) cout << "REPEAT\n"; else cout << "WRONG\n"; } return 0; }
- 1
信息
- ID
- 4210
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 3
- 标签
- 递交数
- 6
- 已通过
- 4
- 上传者