YBTOJ:前缀询问(trie树)
文章目录
- 题目描述
- 解析
- 代码
题目描述
解析
(没有做出来,这个ans的处理方式其实也不难想…qwq)
考虑把T都作为模板串加入trie树
加入每个模板串自然就是按照i顺序的
所以我们在插入t的时候沿途标记一下
新出现的未标记的i的间隔就是当前的i与上一次的标记的差-1
在其中一直取max即可得到最大间隔
不要忘记还有一个间隔是n-最后的标记值!
预处理完trie树后就简单了
让s在trie树上跑,跑到尾就返回尾的ans值即可
如果跑一半失配了说明没有t符合条件,直接返回n即可
代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
typedef unsigned long long ull;
const int N = 6e6+100;
const int M=1e6+10;
const ll mod=199907210507;
int n,m;
int tr[N][4],tot=1,ans[N],id[N];
char s[N];
void build(int k){int l=strlen(s+1),p=1;for(int i=1;i<=l;i++){int a=s[i]-'a'+1;if(!tr[p][a]) tr[p][a]=++tot;p=tr[p][a];ans[p]=max(ans[p],k-id[p]-1);id[p]=k;}
}int ask(){int l=strlen(s+1),p=1;for(int i=1;i<=l;i++){int a=s[i]-'a'+1;if(!tr[p][a]) return n;p=tr[p][a];}return ans[p];
}
int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf(" %s",s+1);build(i);}for(int i=1;i<=tot;i++){ans[i]=max(ans[i],n-id[i]);}for(int i=1;i<=m;i++){scanf(" %s",s+1);printf("%d\n",ask());}return 0;
}
/*
9 6 10
5 6 2 10 10 7 3 2 9
1 4 4 3 2 16 4 10
3 5 2 7 1 9
3 8 2 10
*/
YBTOJ:前缀询问(trie树)相关推荐
- Trie树(字典树)详细知识点及其应用
Trie,又经常叫前缀树,字典树等等.它有很多变种,如后缀树,Radix Tree/Trie,PATRICIA tree,以及bitwise版本的crit-bit tree.当然很多名字的意义其实有交 ...
- trie树查找前缀串_Trie数据结构(前缀树)
trie树查找前缀串 by Julia Geist Julia·盖斯特(Julia Geist) A Trie, (also known as a prefix tree) is a special ...
- 前缀树(字典树,单词查找树,Trie树)
参考网址:https://blog.csdn.net/u013949069/article/details/78056102?utm_source=copy 概述 前缀树又名字典树,单词查找树,Tri ...
- java单词匹配算法_前端学数据结构与算法(八): 单词前缀匹配神器-Trie树的实现及其应用...
前言 继二叉树.堆之后,接下来介绍另外一种树型的数据结构-Trie树,也可以叫它前缀树.字典树.例如我们再搜索引擎里输入几个关键字之后,后续的内容会自动续上.此时我们输入的关键词也就是前缀,而后面的就 ...
- 分门别类刷leetcode——高级数据结构(字典树,前缀树,trie树,并查集,线段树)
目录 Trie树(字典树.前缀树)的基础知识 字典树的节点表示 字典树构造的例子 字典树的前序遍历 获取字典树中全部单词 字典树的整体功能 字典树的插入操作 字典树的搜索操作 字典树的前缀查询 字典树 ...
- 实现字典树(前缀树、Trie树)并详解其应用
今天看到一个比较好的数据结构,字典树,做一下记录,以供自己后期复习和读者朋友的参考. 1.定义 字典树又称单词查找树.前缀树.Trie树等,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序 ...
- Trie树实现前缀自动补全 + AC自动机实现敏感词过滤
文章目录 背景 扩展 AC自动机 背景 最近参与了某业务系统的开发, 需要根据城市的名字简称,找到其官方的完整名称.比如云南的大理,其实其完整的名称是大理白族自治州.可以参考官方的行政区划,点这里. ...
- python Trie树和双数组TRIE树的实现. 拥有3个功能:插入,删除,给前缀智能找到所有能匹配的单词...
#coding=utf-8 #字典嵌套牛逼,别人写的,这样每一层非常多的东西,搜索就快了,树高26.所以整体搜索一个不关多大的单词表 #还是O(1). ''' Python 字典 setdefault ...
- python3精要(5)-最长公共前缀Trie树
单词查找树Trie树,是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计. python函数引用传递 列表.字典 ...
最新文章
- 如何实现phpcms v9_4X版本tag的伪静态?
- linux下基于内存分析的rootkit检测方法
- python基础练习(九)
- VSCode配置 Debugger for Chrome插件
- ThreadPoolExecutor的七个参数详解
- C++ 静态线性表的顺序存储结构(数组实现)
- 爬虫实践---电影排行榜和图片批量下载
- java update 8_版本任你发,我用Java 8!JDK的更新,改变了哪些你写代码的方式?...
- 金蝶kis云,调用增删改查注意点
- Javascript获取select下拉框选中的的值
- python的自带数据集_怎么使用pandas读入python自带的iris数据集
- 新零售凶猛!瑞幸B轮融资估值翻倍,背后是同城物流的暗战
- DOSBOX的安装及ASM文件的编译
- 机器学习常见面试题总结
- 【FPGA】用Verilog语言实现流水灯实验
- 超过心跳间隔的客户端重连接导致额外的License消耗
- 从哪里租vps远程桌面服务器,vps远程桌面服务器租一个
- MySQL基本数据类型与Java基本数据类型
- depth是什么意思啊(depth是什么意思啊英语)
- Matrix factorization techniques for recommender systems,Yehuda Koren et al.,2009
热门文章
- 因为加班,谈了7年的女友跟我分手了……
- 《SAS编程与数据挖掘商业案例》学习笔记之九
- ffbe攻略站_最终幻想勇气启示录ffbe兵员强化攻略
- hadoop 2.7 java_Hadoop2.7环境搭建---Java环境变量
- java 面相,java学习17-面相对象(多态)
- ant 改变表格数据_表格技巧—Excel表格怎么替换数字
- java 计时_Breitling(百年灵)世界时间终极计时腕表
- 关于c语言的符号常量以下叙述中正确的是,关于C语言的符号常量,以下叙述中正确的是...
- python迅雷_迅雷下载链接解析器。
- sqoop将hive导出到mysql_Sqoop hive导出到mysql[转]