题目链接:http://hihocoder.com/problemset/problem/1107

题意:求有多少非依赖前缀,使得前缀下标识的字符串不超过5个。

这里非依赖的意思是,假如前缀a,b,a是b的前缀,则b依赖于a。假如a下标识的字符串已经不超过5个了,那么b就不能统计了。

trie树直接搞,遇到<=5的前缀就计数,否则递归一层。

写了一种非指针的trie树,val存值,id存某一层某一个节点的下一个节点的id。sz维护接下来要插入的id。

 #include <bits/stdc++.h>
using namespace std; const int maxn = ;
const int maxm = ;
const int maxc = ;
typedef struct Trie {
int root, sz;
int val[maxm], id[maxm][maxc];
void build() {
root = ; sz = ;
memset(val, , sizeof(val));
memset(id, -, sizeof(id));
val[root] = 0x7f7f7f7;
}
void insert(const char* str) {
int len = strlen(str);
int u = root;
for(int i = ; str[i]; i++) {
int v = str[i] - 'a';
if(id[u][v] == -) id[u][v] = ++sz;
u = id[u][v];
val[u]++;
}
}
int dfs(int u) {
if(val[u] <= ) return ;
int ret = ;
for(int i = ; i < ; i++) {
if(id[u][i] != -) {
ret += dfs(id[u][i]);
}
}
return ret;
}
}Trie; int n;
Trie trie;
char tmp[maxm]; int main() {
// freopen("in", "r", stdin);
while(~scanf("%d", &n)) {
trie.build();
for(int i = ; i < n; i++) {
scanf("%s", tmp);
trie.insert(tmp);
}
printf("%d\n", trie.dfs(trie.root));
}
return ;
}

[HIHO1107]Shortest Proper Prefix(trie)的更多相关文章

  1. hihoCoder#1107 : Shortest Proper Prefix (前缀树)

    题目大意:在n个单词中,如果以s作为前缀的单词个数不超过5个,那么称s为proper prefix.如果s为proper prefix并且s的任何一个前缀(不包括s)都不是proper prefix, ...

  2. 【python】Leetcode每日一题-前缀树(Trie)

    [python]Leetcode每日一题-前缀树(Trie) [题目描述] Trie(发音类似 "try")或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的 ...

  3. HDU 1671 Phone List (Trie)

    pid=1671">Phone List Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ( ...

  4. LA3942-Remember the Word(Trie)

    题意: 有s个不同的单词,给出一个长字符串把这个字符串分解成若干个单词的连接(可重复使用),有多少种分解方法 分析: dp[i]表示i开始的字符串能分解的方法数 dp[i]=sum(dp[i+len( ...

  5. LeetCode:14. Longest Commen Prefix(Easy)

    1. 原题链接 https://leetcode.com/problems/longest-common-prefix/description/ 2. 题目要求 给定一个字符串数组,让你求出该数组中所 ...

  6. hdu 1251 统计难题 (字典树(Trie)<PS:C++提交不得爆内存>)

    统计难题Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)Total Submis ...

  7. UVA 11488-Hyper Prefix Sets(Trie)

    题意: 给一个01串的集合,一个集合的幸运值是串的个数*集合中串的最大公共前缀 ,求所有子集中最大幸运值 分析: val[N]表示经过每个节点串的个数求幸运值 求就是每个节点值*该节点的深度 搜一遍树 ...

  8. poj2001 Shortest Prefixes (trie)

    读入建立一棵字母树,并且每到一个节点就增加这个节点的覆盖数. 然后再重新扫一遍,一旦碰到某个覆盖数为1就是这个单词的最短前缀了. 不知为何下面的程序一直有bug……不知是读入的问题? type nod ...

  9. 字典树(Trie)的java实现

    一.定义 字典树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它的优点是:利用 ...

随机推荐

  1. BizTalk开发系列(六) BizTalk开发简述

    现在很多大型企业信息化程度很高,运行中的系统可达到数十乃至上百个.而大部分系统由于建设的时间.开发团队和技术 往往不相同,系统之间的大部分都是独立运行的.随着信息化建设的深入各系统之间的交互需求越来越 ...

  2. C# Dictionary已知value获取对应的key

    1:循环遍历法,分为遍历key-value键值对和遍历所有key两种形式 2:使用Linq查询法 private void GetDictKeyByValue() { Dictionary<in ...

  3. 20145218&20145240 《信息安全系统设计基础》实验一 开发环境的熟悉

    20145218&20145240 <信息安全系统设计基础>实验一 开发环境的熟悉 课程:信息安全系统设计基础 班级:1452 姓名:(按贡献大小排名)刘士嘉 张晓涵 学号:(按贡 ...

  4. Java-马士兵设计模式学习笔记-代理模式-动态代理 调用Proxy.newProxyInstance()

    一.概述 1.目标:不自己写代理类,利用Proxy.newProxyInstance()动态生成 2.用到的知识点: (1)//编译源码,生成class,注意编译环境要换成jdk才有compiler, ...

  5. 纯代码TableView自适应高度(很老的使用方法)

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{    return  ...

  6. Netty5.x中新增和值得注意的点

    最近事情多,OneCoder折腾了好几天,总算翻译完成了. 翻译自官方文档:http://netty.io/wiki/new-and-noteworthy-in-5.x.html   该文档会列出在N ...

  7. c#.net常用字符串函数 字符串常用方法

    RegionsStr = RegionsStr.Remove(RegionsStr.LastIndexOf(","), 1);   //去掉最后一个逗号 Compare 比较字符串 ...

  8. require,include,require_once,include_once的区别

    最近面试时被问到,一时间还真没想到太多,仅仅回答了大概的几个,于是回来再确认一下. 以下内容为网络摘抄: ①作用及用法  可以减少代码的重复 include(_once)("文件的路径&qu ...

  9. RDIFramework.NET ━ 9.12 表字段管理 ━ Web部分

    RDIFramework.NET ━ .NET快速信息化系统开发框架 9.12  表字段管理 -Web部分  表(字段)综合管理模块主要功能是对数据表本身,表的各个字段做相应的控制,具体有以下功能: ...

  10. RDIFramework.NET ━ 9.14 数据库连接管理 ━ Web部分

    RDIFramework.NET ━ .NET快速信息化系统开发框架 9.14  数据库连接管理 -Web部分 我们经常可以看到很多软件直接把数据库连接字符串放在软件执行目录下的配置文件中,这种直接把 ...