zoukankan      html  css  js  c++  java
  • Luogu P2580 于是他错误的点名开始了 (Trie树模板)

    传送

    Trie树就是字典树,前缀树...(无所谓啦

    今天考试的时候想出来了trie树怎么写,的确是正解,然而那题爆零了(...)

    还是找个trie树板子写一下吧

    首先,结构体node,包括son[26]表示这个字母的编号,fin表示是否是一个单词的结尾。

    插入新单词,设当前位字母为i,从根开始找,如果没有son[i]则新建节点(trie.son[i] = ++num),然后将指针指向新的节点

    查询操作类似,到单词的最后一位要检查是否有fin。

    *别忘了函数里字符串前的那个“*”

    #include<cstdio>
    #include<iostream>
    #include<cmath>
    #include<cstring>
    using namespace std;
    const int maxn = 1e6+10;
    
    int n,m,num;
    
    struct node{
        int son[26];
        int cnt;
        bool fin;
    }trie[maxn];
    
    void insert(char *s){
        int u = 0;
        int len = strlen(s);
        for(int i = 0;i < len;i++){
            int v = s[i]-'a';    
            if(!trie[u].son[v]) trie[u].son[v] = ++num;
            u = trie[u].son[v];
        }
        trie[u].fin = true;
    }
    
    int query(char *s){
        int u = 0;
        int len = strlen(s);
        for(int i = 0;i < len;i++){
            int v = s[i]-'a';
            if(!trie[u].son[v]) return 2;
            u = trie[u].son[v];
        } 
        if(!trie[u].fin) return 2;
        if(!trie[u].cnt) {
            trie[u].cnt++;
            return 1;
        }
        return 3;
    }
        
    int main(){
        scanf("%d",&n);
        for(int i = 1;i <= n;i++){
            char name[60] ;
            scanf("%s",name);
            insert(name);
        }
        scanf("%d",&m);
        for(int i = 1;i <= m;i++){
            char name[60] ;
            scanf("%s",name);
            int flag = query(name);
            if(flag == 1) printf("OK
    ");
            if(flag == 2) printf("WRONG
    ");
            if(flag == 3) printf("REPEAT
    ");
        }
        return 0;
    }
  • 相关阅读:
    初心
    [CSP-S2019]:赛后总结
    最帅的快读
    检讨书模板
    $Linux$系统$GEDIT$编译运行$C++$和各种乱搞
    [CSP-S模拟测试]:C(倍增+数学)
    [CSP-S模拟测试]:B(期望DP)
    [CSP-S模拟测试]:A(单调栈维护凸包+二分答案)
    [NOIP2018]:旅行(数据加强版)(基环树+搜索+乱搞)
    [JZOJ6347]:ZYB玩字符串(DP+记忆化搜索)
  • 原文地址:https://www.cnblogs.com/mogeko/p/11302744.html
Copyright © 2011-2022 走看看