• HihoCoder第二周(字典树)


    题目

    输入的第一行为一个正整数n,表示词典的大小,其后n行,每一行一个单词,单词由不超过10个的小写英文字母组成,可能存在相同的单词,此时应将其视作不同的单词。接下来的一行为一个正整数m,表示询问的次数,其后m行,每一行一个字符串,该字符串由不超过10个的小写英文字母组成,表示一个询问。对于每一个询问,输出一个整数Ans,表示词典中以给出的字符串为前缀的单词的个数。


    样例输入
    5
    babaab
    babbbaaaa
    abba
    aaaaabaa
    babaababb
    5
    babb
    baabaaa
    bab
    bb
    bbabbaab
    样例输出
    1
    0
    3
    0
    0


    #include<iostream>
    #include <string>
    using namespace std;
    typedef struct trie
    {
        char c;
        int count;
        struct trie* next[26];
    } Trie;
    
    int main()
    {
        Trie* root = new Trie;
        for (unsigned i(0); i < 26; ++i)
            root->next[i] = NULL;
        int n, m;
        string s;
        cin >> n;
        while (n--)
        {
            cin >> s;
            Trie* p = root;
            for (unsigned i(0); i < s.size(); ++i)
            {
                unsigned j = s[i] - 'a';
                if (p->next[j])
                {
                    ++p->next[j]->count;
                }
                else
                {
                    Trie* q = new Trie;
                    q->c = s[i];
                    q->count = 1;
                    for (unsigned k(0); k < 26; ++k)
                        q->next[k] = NULL;
                    p->next[j] = q;
                }
                p = p->next[j];
            }
        }
        cin >> m;
        while (m--)
        {
            cin >> s;
            bool flag = false;
            Trie* p = root;
            for (unsigned i(0); i < s.size(); ++i)
            {
                unsigned j = s[i] - 'a';
                if (!p->next[j])
                {
                    flag = true;
                    break;
                }
                p = p->next[j];
            }
            if (flag) cout << '0' << endl;
            else cout << p->count << endl;
        }
        return 0;
    }
  • 相关阅读:
    [POI2005]A Journey to Mars 单调队列
    滑动窗口 单调队列
    逆序对 模拟贪心
    迷宫 dfs爆搜
    [Usaco2019 Feb]The Great Revegetation
    [Usaco2007 Dec]挑剔的美食家
    [HNOI2004]宠物收养所
    bzoj2639 矩形计算
    [Ahoi2013]作业
    Gty的二逼妹子序列
  • 原文地址:https://www.cnblogs.com/nickqiao/p/7583334.html
Copyright © 2020-2023  润新知