UVA11488 字典树裸题+刘汝佳字典树模板

UVA11488 字典树裸题+刘汝佳字典树模板_第1张图片

UVA11488 字典树裸题+刘汝佳字典树模板_第2张图片


分析:给出一堆字符串,问若干前缀在所有字符串出现的次数k,求k*前缀长度的最大值。

题意比较好理解,既然有如此多的字符串,那么非常好的办法就是构造Trie。边构造Trie,边统计前缀出现的次数,最后深搜一下就做出来了。


代码如下:

#include 
#include 
#include 
using namespace std;

const int maxn = 1e7+10;
int head[maxn];
int Next[maxn];
int ans[maxn];
char ch[maxn];
char word[200+5];
int n;
int sz;
int mx;

int MAX(int x, int y){return x>y?x:y;}

void Insert(const char *s){
    int u = 0, len = strlen(s),v;
    bool found;
    ans[0]++;
    for (int i=0; i


你可能感兴趣的:(字典树)