zoukankan      html  css  js  c++  java
  • 字典树Trie

    第13次提交终于0->100的原因居然是——没有判重???!

    https://www.luogu.org/problem/P3879算是道略显恶心的板子题吧,唯一一点以后可以继承的经验是trie数组利用了结构体+vector的方式解决了空间与维度的问题。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<vector>
     4 #include<cstring>
     5 using namespace std; 
     6 
     7 struct Node{
     8     int a[26];
     9     Node(){memset(a,0,sizeof a);}
    10     int& operator [](int x){return a[x];}
    11 }zero;
    12 
    13 string s;
    14 vector<Node> trie;
    15 vector<int> cntw[500010];
    16 
    17 void add(int i){
    18     int p = 0;
    19     for(int j = 0;j < s.size();j++){
    20         int ne = s[j]-'a';
    21         if(!trie[p][ne]){
    22             trie[p][ne] = trie.size();
    23             trie.push_back(zero);
    24         }
    25         p = trie[p][ne];
    26     }
    27     if(cntw[p].empty()||cntw[p].size()&&i^cntw[p][cntw[p].size()-1])
    28         cntw[p].push_back(i);
    29 }
    30 
    31 void work(){
    32     int flag = 1,p = 0;
    33     for(int i = 0;i < s.size();++i){
    34         int ne = s[i]-'a';
    35         if(!trie[p][ne]){flag = 0;break;}
    36         p = trie[p][ne];
    37     }
    38     if(flag)for(int i = 0;i < cntw[p].size();++i)
    39         printf("%d ",cntw[p][i]);
    40     putchar('
    ');
    41 }
    42 
    43 int n,m;
    44 
    45 int main(){
    46     trie.push_back(zero);
    47     cin >> n;
    48     for(int i = 1;i <= n;i++){
    49         int x;cin >> x;
    50         for(int j = 1;j <= x;j++){
    51             cin >> s;
    52             add(i);
    53         }
    54     }
    55     cin >> m;
    56     for(int i = 1;i <= m;i++){
    57         cin >> s;
    58         work();
    59     }    
    60 return 0;
    61 }
  • 相关阅读:
    centos下升级python
    微信公众号(二)
    微信公众号的开发(一)
    nginx 新手入门
    Mysql is not allowed to connect mysql server
    docker 新手入门 (阿里镜像仓库的使用)
    docker 新手入门 (web项目的部署)
    jquery easyui combox不能编辑只能选择
    $.messager.confirm 用法
    html下载excel模板
  • 原文地址:https://www.cnblogs.com/Wangsheng5/p/11774699.html
Copyright © 2011-2022 走看看