题目链接

输入

第一行包含一个字符串S,S长度不超过50。
第二行包含一个整数N,表示询问的数目。(1 <= N <= 10)
以下N行每行包括一个S的子串s,s不为空串。

输出

对于每一个询问s,求出包含s的状态st,输出一行依次包含shortest(st)、longest(st)和endpos(st)。其中endpos(st)由小到大输出,之间用一个空格分割。

样例输入

aabbabd
5
b
abbab
aa
aabbab
bb

样例输出

b b 3 4 6
bab aabbab 6
aa aa 2
bab aabbab 6
bb aabb 4

思路

根据后缀自动机的基本概念,暴力枚举所有子串,统计他们的endpos并用二进制状态表示。

#include <bits/stdc++.h>
#define LL long long
#define P pair<int, int>
#define lowbit(x) (x & -x)
#define mem(a, b) memset(a, b, sizeof(a))
#define rep(i, a, n) for (int i = a; i <= n; ++i)
const int maxn = 1e6+6;
#define mid ((l + r) >> 1)
#define lc rt<<1
#define rc rt<<1|1
using namespace std;
// __int128 read() {    __int128 x = 0, f = 1;  char c = getchar(); while (c < '0' || c > '9') {        if (c == '-') f = -1;       c = getchar();  }   while (c >= '0' && c <= '9') {      x = x * 10 + c - '0';       c = getchar();  }   return x * f;}
// void print(__int128 x) { if (x < 0) {        putchar('-');       x = -x; }   if (x > 9)  print(x / 10);  putchar(x % 10 + '0');}int main() {#ifndef ONLINE_JUDGE// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);
#endifios::sync_with_stdio(false);cin.tie(0); cout.tie(0);string s;cin >> s;int len = s.size();map<string, LL> ml;map<LL, string> longest, shortest;for (int i = 0; i < len; ++i) {for (int j = 1; j <= len - i; ++j) {string t = s.substr(i, j); LL all = 0;for (int k = 0; k <= len - j; ++k) {string r = s.substr(k, j);if (r == t) all |= 1LL << (k + j);}ml[t] = all;if (j > (int)longest[all].size()) longest[all] = t;if (shortest[all].size() == 0 || (int)shortest[all].size() > j) shortest[all] = t;}}int q;cin >> q;while (q--) {cin >> s;LL tmp = ml[s];cout << shortest[tmp] << " " << longest[tmp];for (int i = 0; ; ++i) {if ((1LL << i) > tmp) break; if ((1LL << i) & tmp) cout << " " << i;}cout << endl;}return 0;
}

hihoCoder #1441 : 后缀自动机一·基本概念相关推荐

  1. HihoCoder - 1441 后缀自动机一·基本概念(模拟)

    描述 小Hi:今天我们来学习一个强大的字符串处理工具:后缀自动机(Suffix Automaton,简称SAM).对于一个字符串S,它对应的后缀自动机是一个最小的确定有限状态自动机(DFA),接受且只 ...

  2. HihoCoder - 1441 后缀自动机一·基本概念(模拟,后缀自动机入门好题)

    题目链接:点击查看 题目大意:给出后缀自动机的定义以及各部分的参数,要求模拟后缀自动机的各个部分 题目分析:直接按照后缀自动机的定义模拟就好了,因为字符串的长度只有50,所以可以用n^3的算法暴力,还 ...

  3. 【hiho】127 后缀自动机一·基本概念 【后缀自动机】

    传送门:后缀自动机一·基本概念 后缀自动机(Suffix Automaton,简称SAM)是处理字符串的很强大的工具,对于一个字符串S,它对应的后缀自动机是一个最小的确定有限状态自动机(DFA),接受 ...

  4. hihoCoder #1457 : 后缀自动机四·重复旋律7

    题目链接 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一段音乐旋律可以被表示为一段数构成的数列. 神奇的是小Hi发现了一部名字叫<十进制进行曲大全>的作品集,顾名思义,这部作品集里 ...

  5. hihoCoder #1445 : 后缀自动机二·重复旋律5

    描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为一段数构成的数列. 现在小Hi想知道一部作品中出现了多少不同的旋律? 输入 共一行,包含一个由小写字母构成的字符串.字符串长度不 ...

  6. hihoCoder #1449 : 后缀自动机三·重复旋律6

    题目链接 时间限制:15000ms 单点时限:3000ms 内存限制:512MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为一段数构成的数列. 现在小Hi想知道一部作品中 ...

  7. HihoCoder - 1465 后缀自动机五·重复旋律8(后缀自动机)

    题目链接:点击查看 题目大意:给出一个模式串,在给出多个匹配串,问每个匹配串与其"循环相似旋律"的字符串,在模式串中出现的总次数,"循环相似旋律"指的是一个字符 ...

  8. HihoCoder - 1457 后缀自动机四·重复旋律7(后缀自动机)

    题目链接:点击查看 题目大意:给出 n 个由 0~9 的数字组成的字符串,现在要求每个子串所表示的十进制下数字的累加之和 题目分析:因为对于字符串的所有子串而言数量无疑是非常庞大的,所以我们选择用后缀 ...

  9. HihoCoder - 1445 后缀自动机二·重复旋律5(后缀自动机)

    题目链接:点击查看 题目大意:给出一个字符串 s ,求 s 中本质不同的子串的数量 题目分析:因为 s 的长度给到了 1e6 ,用后缀数组可能会超时,所以最好的方法肯定是用后缀自动机来做,因为每个节点 ...

最新文章

  1. 虚拟机安装CentOS 5.5详细过程和上网配置
  2. Window平台 mysql8.0下载安装方式
  3. python matplotlib画散点图_python matplotlib库绘制散点图例题解析
  4. aotuwried是java的注解吗_@autowire注入为null
  5. python查找客户总金额_该程序查找需要支付给所有表现良好的Python的最低金额
  6. 课时22:函数:递归是神马
  7. 为什么要用dubbo,dubbo和zookeeper关系,简单的dubbo搭建
  8. 苹果ppt_从苹果发布会到抖音,火遍互联网的快闪视频如何用PPT轻松制作?
  9. fruit loops studio音乐宿主软件daw水果软件20.9中文版
  10. 利用TreeWalk提高网速及其在vista中的安装方法
  11. Excel表格中两列数据对比,找出异同的数据
  12. EUI插件服务器负载显示不兼容,EUI - 魔兽世界最贴心的插件
  13. html好看的后台页面布局,25 个精美的后台管理界面模板和布局
  14. Java工程师工作描述写作要点该怎么写?
  15. AI之路最近的一些思考
  16. 章文嵩将离职,曾是阿里开源“赶集人”,投身开源 20 年
  17. tipask 3.5问答系统部署说明,超详细命令行部署,挂载iso,可内网使用。
  18. 又dota了......
  19. 据说Kivy可以将Python程序弄成App来玩,所以 安装Kivy。关于安装Kivy失败后的解决方案过程
  20. SaaSpace:9种最好的免费幻灯片制作工具

热门文章

  1. flask的第一个hello word 程序
  2. 每天一个linux命令-用户之间切换
  3. 浅析“字典--NSDirctionary”理论
  4. sql 合并相同条件的字段
  5. CSS连载-控制背景与CSS精灵
  6. C# 委托(Delegate) 事件(Event)应用详解
  7. pip安装软件时出现Command python setup.py egg_info failed with error code 1 in /tmp/pip-build*的解决方案
  8. matlab球面波衍射,单色点源矩孔菲涅耳衍射光场的计算与模拟
  9. GitHub之GitHub Actions的项目自动化持续集成和部署
  10. HarmonyOS之深入解析编译构建的配置和代码混淆