zoukankan      html  css  js  c++  java
  • #1014 : Trie树

    输入

    输入的第一行为一个正整数n,表示词典的大小,其后n行,每一行一个单词(不保证是英文单词,也有可能是火星文单词哦),单词由不超过10个的小写英文字母组成,可能存在相同的单词,此时应将其视作不同的单词。接下来的一行为一个正整数m,表示小Hi询问的次数,其后m行,每一行一个字符串,该字符串由不超过10个的小写英文字母组成,表示小Hi的一个询问。

    在20%的数据中n, m<=10,词典的字母表大小<=2.

    在60%的数据中n, m<=1000,词典的字母表大小<=5.

    在100%的数据中n, m<=100000,词典的字母表大小<=26.

    本题按通过的数据量排名哦~

    输出

    对于小Hi的每一个询问,输出一个整数Ans,表示词典中以小Hi给出的字符串为前缀的单词的个数。

    样例输入

    5
    babaab
    babbbaaaa
    abba
    aaaaabaa
    babaababb
    5
    babb
    baabaaa
    bab
    bb
    bbabbaab

    样例输出

    1
    0
    3
    0
    0
     1 #include <algorithm>
     2 #include <iostream>
     3 #include <cstring>
     4 #include <cstdio>
     5 using namespace std;
     6 const int N=400005;
     7 int trie[N][27];
     8 int sum[N];
     9 int tot;
    10 int n,m;
    11 char s[27];
    12 
    13 void Insert(){
    14     int len=strlen(s);
    15     int root=0;
    16     for(int i=0;i<len;i++){
    17         int id=s[i]-'a';
    18         if(!trie[root][id]) trie[root][id]=++tot;
    19         sum[trie[root][id]]++;
    20         root=trie[root][id];
    21     }
    22 }
    23 
    24 int Search(){
    25     int len=strlen(s);
    26     int root=0;
    27     for(int i=0;i<len;i++){
    28         int id=s[i]-'a';
    29         if(!trie[root][id]) return 0;
    30         root=trie[root][id];
    31     }
    32     return sum[root];
    33 }
    34 
    35 int main()
    36 {
    37     scanf("%d",&n);
    38     for(int i=1;i<=n;i++){
    39         scanf("%s",s);
    40         Insert();
    41     }
    42     scanf("%d",&m);
    43     for(int i=1;i<=m;i++){
    44         scanf("%s",s);
    45         printf("%d
    ",Search());
    46     }
    47     return 0;
    48 }
    View Code
  • 相关阅读:
    mysql引擎简介
    spring mvc + mybatis 框架搭建 ( idea + gradle)
    ubuntu下 java、mysql、tomcat(ssl认证) 配置
    Zookeeper 选举机制和脑裂问题
    mininet 入门引导
    Mac OS X 使用python urllib 模块 通过ssl访问报错 urllib.error.URLError
    macOS 下,连接zookeeper等java软件加载较慢的解决方案
    探索学习LinkedList和ArrayList的差别
    mininet 部署记录
    分布式系统 学习笔记
  • 原文地址:https://www.cnblogs.com/qq-1585047819/p/10981910.html
Copyright © 2011-2022 走看看