DHU--1247 Hat’s Words && HiHocder--1014 Trie树 (字典树模版题)
题目链接
两个一个递归方式一个非递归
HiHocoder
#include<bits/stdc++.h>
using namespace std;
#define maxn 100010
struct ac{
],fa;
}tre[maxn*];
,len=;
string s;
void updata(int x,int y){
if(x>=s.size()) return ;
int k=s[x]-'a';
int i;
if(tre[y].nex[k]){
i=tre[y].nex[k];
tre[i].sum++;
updata(++x,i);
}else{
tre[y].nex[k]=++tot;
tre[tot].sum=;
i=tot;
updata(++x,i);
}
){
tre[i].fa++;
}
}
int query(int x,int y){
int k=s[x]-'a';
){
int i=tre[y].nex[k];
return tre[i].sum;
}
if(tre[y].nex[k]){
return query(++x,tre[y].nex[k]);
}
;
}
int main(){
memset(tre,,sizeof(tre));
int n,m;
cin>>n;
;j<n;j++){
cin>>s;
updata(,);
}
cin>>m;
;j<m;j++){
cin>>s;
printf(,));
}
}
/*
5
babaab
babbbaaaa
abba
aaaaabaa
babaababb
5
babb
baabaaa
bab
bb
bbabbaab
求前缀
1
0
3
0
0
*/
HDU
#include<bits/stdc++.h>
using namespace std;
#define maxn 100000
][];
,tot=;
struct ac{
],fa,c;
void init(){
sum=;fa=;
memset(nex,,sizeof(nex));
}
}tre[maxn*];
void add(char s[]){
,j;
;
while(s[i]){
int k=s[i]-'a';
if(tre[z].nex[k]){
j=tre[z].nex[k];
tre[j].sum++;
z=j;
}else{
tre[z].nex[k]=++tot;
j=tot;
tre[j].init();
tre[j].sum=;
z=j;
}
i++;
}
tre[z].fa++;
}
bool query(char s[]){
,j,z=;
while(s[i]){
int k=s[i]-'a';
) ;
z=tre[z].nex[k];
i++;
}
;
;
}
bool query1(char s[]){
,j,z=;
while(s[i]){
int k=s[i]-'a';
z=tre[z].nex[k];
if(tre[z].fa){
)) ;
}
i++;
}
;
}
int main(){
]);
;j<len;j++){
if(query1(a[j])){
cout<<a[j]<<endl;
}
}
}
DHU--1247 Hat’s Words && HiHocder--1014 Trie树 (字典树模版题)的更多相关文章
- 剑指Offer——Trie树(字典树)
剑指Offer--Trie树(字典树) Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种的单词.对于每一个单词,我们要判断他出没出现过,如果出现了,求第一次出现在第几个位 ...
- AC自动机——1 Trie树(字典树)介绍
AC自动机——1 Trie树(字典树)介绍 2013年10月15日 23:56:45 阅读数:2375 之前,我们介绍了Kmp算法,其实,他就是一种单模式匹配.当要检查一篇文章中是否有某些敏感词,这其 ...
- Trie(字典树)
没时间整理了,老吕又讲课了@ @ 概念 Trie即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种,典型应用是统计和排序大量的字符串(不限于字符串) Trie字典树主要用于存储字符串, ...
- [LintCode] Implement Trie 实现字典树
Implement a trie with insert, search, and startsWith methods. Have you met this question in a real i ...
- Trie树|字典树(字符串排序)
有时,我们会碰到对字符串的排序,若采用一些经典的排序算法,则时间复杂度一般为O(n*lgn),但若采用Trie树,则时间复杂度仅为O(n). Trie树又名字典树,从字面意思即可理解,这种树的结构像英 ...
- Trie - leetcode [字典树/前缀树]
208. Implement Trie (Prefix Tree) 字母的字典树每个节点要定义一个大小为26的子节点指针数组,然后用一个标志符用来记录到当前位置为止是否为一个词,初始化的时候讲26个子 ...
- Trie树/字典树题目(2017今日头条笔试题:异或)
/* 本程序说明: [编程题] 异或 时间限制:1秒 空间限制:32768K 给定整数m以及n个数字A1,A2,..An,将数列A中所有元素两两异或,共能得到n(n-1)/2个结果,请求出这些结果中大 ...
- Trie树(字典树)的介绍及Java实现
简介 Trie树,又称为前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串.与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定.一个节点的所有子孙都有相同的前缀,也 ...
- Trie树 - 字典树
1.1.什么是Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构.典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计.它的优点是最大限 ...
- Trie(前缀树/字典树)及其应用
Trie,又经常叫前缀树,字典树等等.它有很多变种,如后缀树,Radix Tree/Trie,PATRICIA tree,以及bitwise版本的crit-bit tree.当然很多名字的意义其实有交 ...
随机推荐
- Laravel 5.6 模型关联 user 表后查询 user 表数据只能获取第一条数据,不知道怎么获取第二条
按照开发手册的说法,肯定是指令不够全,附代码图 如果, tests 是文章表, users 是用户表 test.com/tests/1 是 id 为 1 的文章地址( get 访问) 假如 Tests ...
- Java 多线程概述
几乎所有的操作系统都支持同时运行多个任务,一 个任务通常就是一个程序,每个运行中的程序就是一个进程.当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程. 线程和进程 几乎所有的 ...
- 使用PHP进行SOCKET编程
一.SOCKET原理图 二.SOCKET常用函数 1.创建socket函数: resource socket_create ( int $domain , int $type , int $proto ...
- Python memecache
memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载,故常用来做数据库缓存.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态 ...
- python易混易乱(2)
字符串切割成列表: 以str为分隔符切片mystr,如果maxsplit有指定值,则仅分割maxsplit个字符串,得到maxsplit个字符串的列表 利用字符串的split() 方法 >> ...
- Math java
package cn.liuliu.com; import java.math.BigDecimal; import java.math.BigInteger; /* * 一.Math类? * * 1 ...
- TP5系统变量输出
1.超全局变量 模板中: {$Think.sever.server_name} //全部小写,输出blog.cn 控制器: $_SERVER['SERVER_NAME'] ...
- 清北学堂(2019 4 28 ) part 2
主要内容数据结构: 1.二叉搜索树 一棵二叉树,对于包括根节点在内的节点,所有该节点左儿子比此节点小,所有该节点右儿子比该节点大,(感觉好像二分...) 每个节点包含一个指向父亲的指针,和两个指向儿子 ...
- winserver 2008 R2服务器安装IIS
winserver 2008 R2 IIS7 安装IIS 打开服务器管理器 选择“角色”,右击添加角色 点击“下一步” 勾选”Web服务器(IIS)“,点击”下一步“ 勾选”常见Http功能.应用程序 ...
- JAVA spring配置文件总结
首先来看一个标准的Spring配置文件 applicationContext.xml <?xml version="1.0" encoding="UTF-8&quo ...