首页 > 其他分享 >洛谷 P8306 【模板】字典树

洛谷 P8306 【模板】字典树

时间:2024-03-27 13:35:37浏览次数:19  
标签:P8306 洛谷 cur start trie next int 模板 string

写模板:
1 确定树的节点指针数量
2 确定起始字符
3 实现插入方法
4 根据题目编写求解方法,或者添加计数元素到节点中

struct Node{
    array<int, 100> next{};
    int cnt = 0;
};

class Trie{
public:
    Trie(char start): start_(start), root_(0){
        trie_.resize(1);
    }

    void insert(const string& s){
        int cur = root_;
        for (const auto& x : s){
            int p = x - start_;
            if (trie_[cur].next[p] == 0){
                trie_.emplace_back();
                trie_[cur].next[p] = trie_.size() - 1;
            }
            cur = trie_[cur].next[p];
            trie_[cur].cnt ++;
        }
    }

    int get(const string& t){
        int cur = root_;
        for (const auto& x : t){
            int p = x - start_;
            if (trie_[cur].next[p] == 0){
                return 0;
            }
            cur = trie_[cur].next[p];
        }
        return trie_[cur].cnt;
    }

private:
    vector<Node> trie_;
    char start_;
    int root_;
};


void solve(){
    int n, q;
    cin >> n >> q;

    Trie trie('0');
    for (int i = 0; i < n; ++i){
        string s;
        cin >> s;
        trie.insert(s);
    }

    while (q --){
        string t;
        cin >> t;
        cout << trie.get(t) << '\n';
    }
}

标签:P8306,洛谷,cur,start,trie,next,int,模板,string
From: https://www.cnblogs.com/yxcblogs/p/18098928

相关文章

  • 洛谷 P5937 [CEOI1999] Parity Game
    题意:区间长度为n,m个查询。每次查询给出区间与一个数值0或者1,代表区间内的1的个数。找出不矛盾的最后一个询问。思路:首先用到区间压缩,排序后去重即可。使用带权dsu,如果是同一个root,那么xor运算看是否符合输入。如果不是同一个root,直接合并。这里合并区间的时候权重更新有点抽象,xx......
  • [普及+] 模板口胡
    差分约束系统省流:给出\(n\)个数,\(m\)个不等式,每个形如\(x_a-x_b\lew\),求通解。转化一下,\(x_a\lex_b+w\)这不就是图论点转移吗,连一条\(x_b\tox_a\)权值为\(w\)的边,最后要求通解即求当前点集权值满足所有边。不妨这样想,确定一个点,再更新其它点。这不就是最短路吗......
  • 算法模板收集 (截至2024.3.26)
    准备线下比赛用的模板,会一直更新,但更新频率不高。找个代码托管平台放一下或许更合适,不过暂时没心思做这个。小提示:点击任意标题旁边的“显示目录导航”,再点击右上角的图钉可以固定目录。约定:所有区间操作都是在闭区间上进行的。编译器要支持gnu++11标准基本框......
  • 洛谷题单指南-图的基本应用-P5318 【深基18.例3】查找文献
    原题链接:https://www.luogu.com.cn/problem/P5318题意解读:图的建立、DFS、BFS模版题。解题思路:本题主要考察建图、图的DFS、BFS遍历。建图方式:领接表vector<int>g[N];需要注意的是,在DFS、BFS搜索领接点时,需要先将领接点编号排序,满足题目要求的“如果有很多篇文章可以参阅,请......
  • VUE3.0(一):模板语法及指令介绍
    模板语法Vue使用了基于HTML的模板语法,允许开发者声明式地将DOM绑定至底层Vue实例的数据。Vue的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进DOM的系统。结合响应系统,在应用状态改变时,Vue能够智能地计算出重新渲染组件的最小代价并应用到DOM......
  • 洛谷题单指南-集合-P2814 家谱
    原题链接:https://www.luogu.com.cn/problem/P2814题意解读:已知多组父子关系,找某个人最早的祖先,并查集的应用。解题思路:由于存在真正的父子关系,所以在并查集合并的时候,要把p[x]=y中x设置为子,y设置为父,其余都是并查集的常规操作。由于是计算姓名之间的父子关系,并查集可以用map......
  • 洛谷 P9237 [蓝桥杯 2023 省 A] 像素放置
    题意:n*m的方格,有的格子是数字,是数字的格子代表了相邻(包括自己)的9个格子内颜色值为1的格子有这么多个。给出这个方格,求满足条件的颜色方格,保证答案唯一。n<=10,m<=10。思路:想不出好办法,直接暴力+剪枝。暴力好说,01dfs即可,关键是如何剪枝。剪枝肯定是已经不会再变动颜色的......
  • 洛谷题单指南-集合-P3879 [TJOI2010] 阅读理解
    原题链接:https://www.luogu.com.cn/problem/P3879题意解读:此题本质上是计算倒排索引,所谓倒排索引,即不是通过文章来找单词,而是通过单词来找文章。解题思路:要建立单词和文章之间的关系,一个单词对应多篇文章,且要按照文章编号排序,可以使用如下数据结构:map<string,set<int>>h;只......
  • 洛谷题单指南-集合-P1955 [NOI2015] 程序自动分析
    原题链接:https://www.luogu.com.cn/problem/P1955题意解读:要判断约数条件是否可以同时满足,主要是要判断不相等的情况。解题思路:对于相等的条件,直接进行集合合并即可;对于不相等的条件,判断两者是否属于同一个集合,如果形成矛盾,则条件不能成立。由于i,j的范围至10^9,定义并查集如果......
  • OpenCV模板匹配(匹配图片中对应元素)
    OpenCV模板匹配(匹配图片中对应元素)模板匹配方法单个元素进行匹配并绘制矩形框效果代码模板匹配方法模板是被查找目标的图像,查找模板在原始图像中的哪个位置的过程就叫模板匹配。OpenCV提供的matchTemplate()方法就是模板匹配方法,其语法如下:result=cv2.matchTemp......