[洛谷P2580]于是他错误的点名开始了
Posted 蒟蒻zht的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[洛谷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]于是他错误的点名开始了的主要内容,如果未能解决你的问题,请参考以下文章