题目链接:
方法一、\(\rm Trie\)
#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 10;
int ch[N][26], idx, cnt[N];
void insert(string s) {
int p = 0;
for (int i = 0; i < s.size(); i++) {
int j = s[i] - 'a';
if (!ch[p][j]) ch[p][j] = ++idx;
p = ch[p][j];
}
cnt[p] ++;
}
int query(string s) {
int p = 0;
for (int i = 0; i < s.size(); i++) {
int j = s[i] - 'a';
if (!ch[p][j]) return 0;
p = ch[p][j];
}
return cnt[p];
}
int main()
{
ios::sync_with_stdio(false), cin.tie(nullptr);
int n, m;
cin >> n;
for (int i = 0; i < n; i++) {
string s;
cin >> s;
insert(s);
}
cin >> m;
map<string, int> p;
vector<string> v;
for (int i = 0; i < m; i++) {
string s;
cin >> s;
p[s] = 0;
v.push_back(s);
}
for (auto i : v) {
int t = query(i);
if (!t) cout << "WRONG\n";
else if (t == 1 && p[i] == 0) {
cout << "OK\n";
p[i] = 1;
}
else cout << "REPEAT\n";
}
return 0;
}
标签:cnt,ch,点名,string,错误,int,cin,++,P2580
From: https://www.cnblogs.com/pangyou3s/p/18153701