阿里云建站视频,简约网站欣赏,北京网站开发招聘58,建设网站 无法显示图片Problem - 514C - Codeforces
题意#xff1a; 思路#xff1a;
其实是trie上dfs的板题
先把字符串插入到字典树中
对于每次询问#xff0c;都去字典树上dfs
注意到字符集只有3#xff0c;因此如果发现有不同的字符#xff0c;去枚举新的字符
Code#xff1a;
#in…Problem - 514C - Codeforces
题意 思路
其实是trie上dfs的板题
先把字符串插入到字典树中
对于每次询问都去字典树上dfs
注意到字符集只有3因此如果发现有不同的字符去枚举新的字符
Code
#include bits/stdc.husing i64 long long;using namespace std;const int N 4e5 10;
const int M 3e6 10;
const int P 131;string s;int tot 0;
int tag[N];
int tr[N][30];void insert(string x) {int p 0;for (int i 0; i x.size(); i ) {int u x[i] - a;if (! tr[p][u]) {tr[p][u] tot;}p tr[p][u];}tag[p] 1;
}
bool dfs(int dep, int u, int num) {if (s[dep]) {int v s[dep] - a;if (tr[u][v]) {if (dfs(dep 1, tr[u][v], num)) return true;}if (!num) {for (int j 0; j 3; j ) {if (j ! v tr[u][j]) {if (dfs(dep 1, tr[u][j], num 1)) return true;}}}}else if (tag[u] num) return true;return false;
}
void solve() {int n,m;cin n m;for (int i 1; i n; i ) {cin s;insert(s);}for (int i 1; i m; i ) {cin s;if (dfs(0, 0, 0)) {cout YES \n;}else {cout NO \n;}}
}
signed main(){ios::sync_with_stdio(false);cin.tie(nullptr);int t 1;//cin t;while(t --) {solve();}return 0;
}