• CODEVS——T 4189 字典


    http://codevs.cn/problem/4189/

     时间限制: 1 s
     空间限制: 256000 KB
     题目等级 : 大师 Master
     
     
    题目描述 Description

    最经,skyzhong得到了一本好厉害的字典,这个字典里整整有n个单词(1<=n<=200000)

    现在skyzhong需要在字典里查询以某一段字母开头的单词

    如:skyzhong想查询a

    那么只要是a开头的单词就可以了

    skyzhong只想知道里面有没有这一个单词(因为没有他就不查了)

    若有,请输出YES。若没有,请输出NO

    输入描述 Input Description

    第一行一个数n

    第二行到第n+1行,一行一个字符串

    再下一行一个数m,表示skyzhong想要查询的次数

    接着m行,一行一个字符串,表示skyzhong想要查的东西

    输出描述 Output Description

    共m行,若有这字串输出YES,否则输出NO

    样例输入 Sample Input

    3

    asd

    asfdghj

    asfd

    3

    asd

    asdghj

    asf

    样例输出 Sample Output

    YES

    NO

    YES

    数据范围及提示 Data Size & Hint

    字符串只有小写字母,且长度≤8

     1 #include <algorithm>
     2 #include <cstring>
     3 #include <cstdio>
     4 
     5 using namespace std;
     6 
     7 int tot,n;
     8 char s[11];
     9 struct Trie
    10 {
    11     int next[27];
    12 }tr[3000000];
    13 inline void Trie_build()
    14 {
    15     int now=0,len=strlen(s);
    16     for(int x,i=0;i<len;i++)
    17     {
    18         x=s[i]-'a';
    19         if(tr[now].next[x])
    20             now=tr[now].next[x];
    21         else
    22         {
    23             tr[now].next[x]=++tot;
    24             now=tot;
    25         }
    26     }
    27 }
    28 inline bool Trie_find()
    29 {
    30     int len=strlen(s);
    31     int now=0,p=0;
    32     for(;p<len;)
    33         if(tr[now].next[s[p]-'a'])
    34             now=tr[now].next[s[p]-'a'],p++;
    35         else return 0;
    36     return 1;
    37 }
    38 
    39 int main()
    40 {
    41     scanf("%d",&n);
    42     for(int i=1;i<=n;i++)
    43     {
    44         scanf("%s",s);
    45         Trie_build();
    46         memset(s,0,sizeof(s));
    47     }
    48     scanf("%d",&n);
    49     for(int i=1;i<=n;i++)
    50     {
    51         scanf("%s",s);
    52         if(Trie_find())    printf("YES
    ");
    53         else printf("NO
    ");
    54         memset(s,0,sizeof(s));
    55     }
    56     return 0;
    57 }
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    redis缓存穿透
    rocketmq配置文件两主两从
    jvm参数模板
    (转)volatile如何保证可见性
    Spring事务传播性与隔离级别
    Redis windows 远程连接配置修改
    Redis安装与配置( Windows10 或Windows server)
    C#中的虚函数及继承关系
    C#高级功能(三)Action、Func,Tuple
    WAMP配置httpd.conf允许外部访问
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7398717.html
Copyright © 2020-2023  润新知