【hiho】127 后缀自动机一·基本概念 【后缀自动机】
传送门:后缀自动机一·基本概念
后缀自动机(Suffix Automaton,简称SAM)是处理字符串的很强大的工具,对于一个字符串S,它对应的后缀自动机是一个最小的确定有限状态自动机(DFA),接受且只接受S的后缀。
对于字符串S="aabbabd",它的后缀自动机是:
介绍一个概念子串的结束位置集合 endpos。对于S的一个子串s,endpos(s) = s在S中所有出现的结束位置集合。还是以S="aabbabd"为例,endpos("ab") = {3, 6},因为"ab"一共出现了2次,结束位置分别是3和6。同理endpos("a") = {1, 2, 5}, endpos("abba") = {5}。
对于S="aabbabd":
状态 | 子串 | endpos |
---|---|---|
S | 空串 | {0,1,2,3,4,5,6} |
1 | a | {1,2,5} |
2 | aa | {2} |
3 | aab | {3} |
4 | aabb,abb,bb | {4} |
5 | b | {3,4,6} |
6 | aabba,abba,bba,ba | {5} |
7 | aabbab,abbab,bbab,bab | {6} |
8 | ab | {3,6} |
9 | aabbabd,abbabd,bbabd,babd,abd,bd,d | {7} |
hiho 大神
094791
van048
FakerInHeart
094791's beautiful Code
//后缀自动机一·基本概念
//hiho127
#include <bits/stdc++.h>
using namespace std;void print(set<int>&s){set<int>::iterator it;for(it=s.begin();it!=s.end();it++){printf("%u ",*it);}putchar('\n');
}
int main(){string s;map<string,set<int> >m;cin>>s;int i;int l;// 好优美!for(l=1;l<=s.length();l++){for(i=0;i+l<=s.length();i++){string sub=s.substr(i,l);set<int>tmp=m[sub];tmp.insert(i+l);m[sub]=tmp;}}int t;cin>>t;while(t--){cin>>s;string lstr=s;string sstr=s;set<int>tmp=m[s];map<string,set<int> >::iterator it;for(it=m.begin();it!=m.end();it++){if(it->second==tmp){if(lstr.length()<it->first.length()){lstr=it->first;}if(sstr.length()>it->first.length()){sstr=it->first;}}}printf("%s %s ",sstr.c_str(),lstr.c_str());print(tmp);}return 0;
}
转载于:https://www.cnblogs.com/shengwang/p/9794450.html
【hiho】127 后缀自动机一·基本概念 【后缀自动机】相关推荐
- hihoCoder #1441 : 后缀自动机一·基本概念
题目链接 输入 第一行包含一个字符串S,S长度不超过50. 第二行包含一个整数N,表示询问的数目.(1 <= N <= 10) 以下N行每行包括一个S的子串s,s不为空串. 输出 对于每一 ...
- HihoCoder - 1441 后缀自动机一·基本概念(模拟)
描述 小Hi:今天我们来学习一个强大的字符串处理工具:后缀自动机(Suffix Automaton,简称SAM).对于一个字符串S,它对应的后缀自动机是一个最小的确定有限状态自动机(DFA),接受且只 ...
- 后缀自动机入门/基本概念
教程链接 (本文为适应自己的理解,对原文做出删改,建议到原文学习) 后缀自动机可以干啥? 后缀自动机(SAM)可以解决许多字符串相关问题.是一个特别nb的数据结构.它可以: 1.在另一个字符串中搜索一 ...
- 后缀树系列一:概念以及实现原理( the Ukkonen algorithm)
首先说明一下后缀树系列一共会有三篇文章,本文先介绍基本概念以及如何线性时间内构件后缀树,第二篇文章会详细介绍怎么实现后缀树(包含实现代码),第三篇会着重谈一谈后缀树的应用. 本文分为三个部分, 首先介 ...
- EXE转JPG后缀格式工具(真实JPG后缀)
EXE转JPG后缀格式工具(真实JPG后缀) exe转换为jpg工具,双击之后正常运行. 杀毒软件误报 本程序禁止用于违法操作. 下载地址 链接: https://pan.baidu.com/s/1b ...
- 前端判断文件后缀名_JS 获取文件后缀,判断文件类型(比如是否为图片格式)
1.获取文件后缀H3I免费资源网 有时候我们需要通过文件名或者路径,得到该文件的后缀名(扩展名),可以通过如下方式进行截取:H3I免费资源网 //文件路径 var filePath = "f ...
- c++:中缀表达式和后缀表达式,中缀转后缀(简析)
一:什么是中缀表达式 中缀表达式是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间 举例: 1+2*3=7 其实就是我们平时的运算 二:什么是后缀表达式 又称逆波兰表达式,指的是 ...
- 【元胞自动机】基于元胞自动机模拟交通事故道路通行量matlab源码
一.简介 元胞自动机(CA)是一种用来仿真局部规则和局部联系的方法.典型的元胞自动机是定义在网格上的,每一个点上的网格代表一个元胞与一种有限的状态.变化规则适用于每一个元胞并且同时进行.典型的变化规则 ...
- c#元胞自动机_用元胞自动机实现多数分类算法
元胞自动机(Cellular automaton) 元胞自动机是由元胞组成的网格,每个元胞都根据邻域的状态来选择开或关.所有的元胞都遵循同样的规则,也称为元胞的更新规则,规则根据各元胞邻域的当前状态决 ...
最新文章
- 架构师成长之路-个人学习经验分享(公司研发峰会演讲ppt)
- android与苹果平板生态,Android和Apple平板电脑的性价比比较
- (转)linux如何让历史记录不记录敏感命令
- mysql故障诊断_mysql常见故障诊断
- 【原创】大叔案例分享(3)用户行为分析--见证scala的强大
- 【Linux】开源分布式存储系统:GlusterFS
- openfoam211版本安装
- 使用 csv 导入的方式在 SAP S/4HANA 里创建 employee 数据
- 为WPF播放GIF伤神不?
- nginx的日志文件配置
- 学计算机单招可以报那几个公立学校,为什么要选择公办单招学校,四川公办单招学校有哪些?...
- Linux的开源免费办公软件,开源免费Office办公套件(LibreOffice)
- 怎么做装修预算?装修预算需要注意的三大事项
- 雪景特效制作软件JixiPix Snow Daze for Mac
- 上市公司创新研发支出数据(2006-2018年)
- 写程序电脑常用快捷键
- 传奇私服开服架设教程 传奇服务端设置教程
- Java打印输出左下三角、右下三角、正上三角、倒三角、菱形
- 大二Web课程设计——家乡主题网页设计(web前端网页制作课作业) 四川旅游网页设计制作
- 齐鲁工业大学计算机科学与技术学院院长,齐鲁工业大学计算机科学与技术学院导师教师师资介绍简介-赵盛荣...
热门文章
- 1047. 编程团体赛(20)-PAT乙级真题
- 蓝桥杯 ADV-95 算法提高 字符串比较
- 1052. 卖个萌 (20)-PAT乙级真题
- 0基础web开发 python_真零基础Python开发web
- python 3d重建_三维人脸重建(一)——Python读取obj文件
- opencore0.6.4_iOS 13.4/iPadOS 13.4正式版发布:iCloud支持文件夹共享
- nginx历史版本下载链接
- 一.oracle的SQL中group by使用的情况(与聚合函数的关系)
- 项目开发中对使用的第三方库统一进行管理__添加属性表/页
- 最大连续子数组和求解问题