传送门

题意:

求sss的最小表示。

∣s∣≤1e4|s|\le 1e4∣s∣≤1e4

思路:

可以选择直接套最小表示法的板子,但也可以将sss复制,即ss=s+sss=s+sss=s+s,对ssssss建samsamsam,让后贪心的找一个长度为nnn的字典序最小的子串,这个可以直接遍历得到,让后其len−n+1len-n+1len−n+1即为答案。

// Problem: Glass Beads
// Contest: Virtual Judge - UVA
// URL: https://vjudge.net/problem/UVA-719
// Memory Limit: 1024 MB
// Time Limit: 3000 ms
//
// Powered by CP Editor (https://cpeditor.org)//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#include<random>
#include<cassert>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid ((tr[u].l+tr[u].r)>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1000010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n;
int last=1,tot=1,len;
int ed[N];
char s[N];
struct Node {int ch[26];int len,fa;
}sam[N*2];void init() {for(int i=1;i<=tot;i++) {for(int j=0;j<26;j++) sam[i].ch[j]=0;sam[i].len=sam[i].fa=0;}last=tot=1; len=0;
}void add(int c,int id) {int p=last,np=last=++tot; sam[np].len=sam[p].len+1;while(p&&!sam[p].ch[c]) {sam[p].ch[c]=np;p=sam[p].fa;} if(!p) sam[np].fa=1;else {int q=sam[p].ch[c];if(sam[q].len==sam[p].len+1) sam[np].fa=q;else {int nq=++tot; sam[nq]=sam[q];sam[nq].len=sam[p].len+1;sam[q].fa=sam[np].fa=nq;while(p&&sam[p].ch[c]==q) {sam[p].ch[c]=nq;p=sam[p].fa;}}}
}int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);int _; scanf("%d",&_);while(_--) {init();scanf("%s",s+1); n=strlen(s+1);for(int i=1;i<=n;i++) add(s[i]-'a',i);for(int i=1;i<=n;i++) add(s[i]-'a',i);int st=1,nn=n;st=sam[st].ch['m'-'a'];st=sam[st].ch['a'-'a'];printf("%d\n",sam[st].len);}return 0;
}
/**/

UVA719 Glass Beads 最小表示 / 后缀自动机相关推荐

  1. POJ 1509 Glass Beads 后缀自动机

    求给定字符串s从哪个位置开始的循环同构串字典序最小. 如果复制一遍s,发现其所有循环同构都是新字符串ss的长度为|s|的子串. 于是后缀自动机..dfs,不断地走字典序最小的边,直到走了|s|次即可. ...

  2. 【POJ1509】Glass Beads 【后缀自动机】

    题意 给出一个字符串,求它的最小表示法. 分析 这个题当然可以用最小表示法做啦!但是我是为了学后缀自动机鸭! 我们把这个字符串长度乘二,然后建SAM,然后在SAM上每次跑最小的那个字母,找出长度为n的 ...

  3. 后缀自动机/回文自动机/AC自动机/序列自动机----各种自动机(自冻鸡) 题目泛做...

    题目1 BZOJ 3676 APIO2014 回文串 算法讨论: cnt表示回文自动机上每个结点回文串出现的次数.这是回文自动机的定义考查题. 1 #include <cstdlib> 2 ...

  4. @poj - 1509@ Glass Beads

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个由小写字母构成的圆环形的字符串(即首字母和末字母是相连的 ...

  5. @总结 - 6@ 后缀自动机

    目录 @0 - 参考资料@ @0.5 - 引言@ @1 - what is it?@ @自动机@ @DAWG@ @终点集合 end-pos@ @后缀链接 与 parent 树@ @2 - how to ...

  6. (Incomplete) UVa 719 Glass Beads

    方法:最小表示法 题意及求一个string最小表示法的启示index.套用模版即可. code: 1 #include <cstdio> 2 #include <cstring> ...

  7. 【BZOJ-13962865】识别子串字符串识别 后缀自动机/后缀树组 + 线段树

    1396: 识别子串 Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 312  Solved: 193 [Submit][Status][Discus ...

  8. BZOJ 4032 luogu P4112 [HEOI2015]最短不公共子串 (DP、后缀自动机)

    这其实是道水题... 题目链接: (bzoj)https://www.lydsy.com/JudgeOnline/problem.php?id=4032 (luogu)https://www.luog ...

  9. UOJ #131 BZOJ 4199 luogu P2178【NOI2015】品酒大会 (后缀自动机、树形DP)

    UOJ #131 BZOJ 4199 luogu P2178[NOI2015]品酒大会 (后缀自动机.树形DP) 水是水,但是写出了不少问题,因此写一发博客. https://www.luogu.or ...

最新文章

  1. 什么是GREENPLUM
  2. 雷林鹏分享:PHP 5 时区
  3. 如何使用React Hook
  4. executequery方法_在IDEA的maven项目中连接使用MySQL8.0方法教程
  5. 基于Yarp实现内网http穿透
  6. leetcode387. 字符串中的第一个唯一字符
  7. imgkit分辨率_pythonhtml2image: imgkit 和 wkhtmltoimage的坑
  8. c++刷题(18/100)树
  9. 受半导体短缺及疫情影响,丰田已下调9月10月及当前财年产量预期
  10. Python遍历破解FTP密码,并上传webshell
  11. AR增强现实的未来展望
  12. HDU 1233 - 还是畅通工程
  13. ENVI入门系列教程---一、数据预处理---3.2 遥感图像几何精校正
  14. [转载]最小生成树-Prim算法和Kruskal算法
  15. 毕设题目:Matlab肌电信号
  16. 2.5数字传输系统2.6宽带接入技术
  17. PCL库实时显示点云流
  18. 程序员健身了6个月,瘦了 30 斤,怎么做到的?
  19. chemdraw20.0新功能及使用教程、安装教程
  20. python爬虫文字加密_涉及字体加密的爬虫分析

热门文章

  1. js input 自动换行_矿用自动灭火装置水基型自动灭火装置原理国内分析研讨_搜狐汽车...
  2. 目瞪口呆!137亿年的宇宙演化,竟然如此震撼!简直颠覆想象....
  3. 少女为什么会身上香香的?
  4. 如何有效利用碎片时间?这里有个办法
  5. 阿里日均纳税超1.4亿;AI换脸骗过美侦查;日本民众哄抢令和报纸;辟谣教学楼发现大量金矿;上海拨通首个5G通话;这就是今日大新闻...
  6. 科幻作家阿西莫夫上世纪预言2019: 计算机彻底变革教育,太空移民进行中
  7. composer 查看php 版本_最常用的PHP版本:PHP 7.3取代7.2
  8. linux 压缩成bz2,linux 将文件压缩成bz2格式 命令:bzip2
  9. 单文件组件的组件传值_移动端组件化架构(下)
  10. 欧几里得距离网络_使用Tensorflow对象检测模型和OpenCV的社交距离和遮罩检测器...