字典树

作者: kisslight | 来源:发表于2017-08-03 09:25 被阅读0次

UVA 11488
题目链接https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2483

给定若干个01字符串,从这些字符串中选出一个集合,使得这个集合所有字符串的最长公共前缀和字符串个数相乘最大.

思路:
比较裸的一棵字典树,回想一下字典树的性质,因为是在不同的节点的时候进行分叉,而一个节点可能又多个分叉点,如果有3个分叉点说明到这个节点的长度就是这三个分叉也就是三个字符串的最长公共前缀的长度,然后再乘分叉数和原来的ans比较就可以获得答案了

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>

using namespace std;
const int maxnode = 50010 * 2;
const int sigma_size = 12;
long long ans;

struct Trie{
    int ch[maxnode][sigma_size];
    int cnt[maxnode];
    int sz;
    void clear(){
        sz = 1;
        ans = 0;
        memset(ch, 0, sizeof(ch));
        memset(cnt, 0, sizeof(cnt));
    }
    int idx(char c){
        return c - '0';
    }
    void insert(char *s){
        int u = 0, n = strlen(s);
        for(int i = 0;i < n;i ++){
            int c = idx(s[i]);
            if (!ch[u][c]){
                memset(ch[sz], 0, sizeof(ch[sz]));
                ch[u][c] = sz ++;
            }
            u = ch[u][c];
            cnt[u] ++;
            ans = max(ans,(long long)cnt[u] * (i + 1));
        }
    }
};

Trie trie;
int n, t;
char ss[maxnode];
int main(){
    scanf("%d", &t);
    while (t --){
        trie.clear();
        scanf("%d", &n);
        for (int i = 0;i < n;i ++){
            scanf("%s", ss);
            trie.insert(ss);
        }
        cout << ans << endl;
    }
    return 0;
}

相关文章

  • 2019-03-31字典树Tire

    字典树图示 字典树案例

  • Trie

    字典树 01字典树

  • (六)树结构---字典树

    1.字典树基础 1.1.字典树 字典树又称前缀树,对于一个字符串在加入字典树结构时,会合并相同的字符,字典树是一种...

  • 字典树

  • 字典树

    需求: 判断文本中是否包含某个词, 以及词频问题:中文分词实际使用的词典往往在几十万个词以上,逐个匹配成本太大。方...

  • 字典树

    功能 字典树是用数组存储大量字符串的一种算法 字典树算法开辟空间非常大,但是对于字符串插入和查询有很快的速度 用法...

  • 字典树

    UVA 11488题目链接https://uva.onlinejudge.org/index.php?option...

  • 字典树

    应用场景: 又称“单词查找树”,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但...

  • 字典树

    直接上代码: 什么是字典树? 百度 字典树的牛逼之处: 1.利用字符串的公共前缀来节约存储空间。 2.最大限度地减...

  • a 字典树

    1 trie树 又称单词查找树或键树,是哈希树的变种。典型应用是用于统计和排序大量的字符串,经常被搜索引擎系统用于...

网友评论

      本文标题:字典树

      本文链接:https://www.haomeiwen.com/subject/cpvulxtx.html