首页 > 代码库 > [洛谷P2580]于是他错误的点名开始了
[洛谷P2580]于是他错误的点名开始了
洛谷P2580的一个水题,用啥都能过,不过为了联系一下刚刚学会的字典树,还是认真做一下吧。
#include <cstdio> #include <cstring> using namespace std; #define idx(x) x - ‘a‘ int n, m, nex; struct node { int next[26]; int val; }tree[1000001]; void Insert(char *s) { int i, rt = 0, len = strlen(s) - 1; for(i = 0; i <= len; i++) { int c = idx(s[i]); if(!tree[rt].next[c]) tree[rt].next[c] = ++nex; rt = tree[rt].next[c]; } tree[rt].val = 1; } int Find(char *s) { int i, rt = 0, len = strlen(s) - 1; for(i = 0; i <= len; i++) { int c = idx(s[i]); if(!tree[rt].next[c]) return 0; rt = tree[rt].next[c]; } if(tree[rt].val == 1) { tree[rt].val++; return 1; } else return 2; } int main() { int i; char str[1000001]; scanf("%d", &n); for(i = 1; i <= n; i++) { scanf("%s", str); Insert(str); } scanf("%d", &m); for(i = 1; i <= m; i++) { scanf("%s", str); int f = Find(str); if(f == 0) printf("WRONG\n"); else if(f == 1) printf("OK\n"); else printf("REPEAT\n"); } return 0; }
[洛谷P2580]于是他错误的点名开始了
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。