码迷,mamicode.com
首页 > 其他好文 > 详细

[洛谷P2580]于是他错误的点名开始了

时间:2017-03-29 20:10:01      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:nod   har   ide   tree   ring   node   for   blog   i++   

洛谷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;
}
View Code

 

[洛谷P2580]于是他错误的点名开始了

标签:nod   har   ide   tree   ring   node   for   blog   i++   

原文地址:http://www.cnblogs.com/zhenghaotian/p/6641502.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!