zoukankan      html  css  js  c++  java
  • 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 }
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    HAproxy 1.5 dev14 发布
    IBM/DW 使用 Java 测试网络连通性的几种方法
    Skype 4.1 Linux 发布,支持微软帐号登录
    Dorado 7.1.20 发布,Ajax的Web开发平台
    Aspose.Slides for Java 3.0 发布
    开发版本 Wine 1.5.18 发布
    BitNami Rubystack 开始支持 Ruby 2.0
    XWiki 4.3 正式版发布
    Silverlight实例教程 Out of Browser的Debug和Notifications窗口
    Silverlight实例教程 Out of Browser与Office的互操作
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7398717.html
Copyright © 2011-2022 走看看