看上去比较SA,但是在学SAM所以就用SAM来做……
把串复制一遍接在后面,对这个新串求SAM(这里的儿子节点要用map转移),然后从根节点每次都向最小的转移走,这样走n次转移的串就是答案

#include<iostream>
#include<cstdio>
#include<map>
using namespace std;
const int N=1000005;
int n,a[N],fa[N],dis[N],la,cur=1,cnt=1;
map<int,int>ch[N];
int read()
{int r=0,f=1;char p=getchar();while(p>'9'||p<'0'){if(p=='-')f=-1;p=getchar();}while(p>='0'&&p<='9'){r=r*10+p-48;p=getchar();}return r*f;
}
void ins(int c,int id)
{la=cur,dis[cur=++cnt]=id;int p=la;for(;p&&!ch[p][c];p=fa[p])ch[p][c]=cur;if(!p)fa[cur]=1;else{int q=ch[p][c];if(dis[q]==dis[p]+1)fa[cur]=q;else{int nq=++cnt;dis[nq]=dis[p]+1;// memcpy(ch[nq],ch[q],sizeof(ch[nq]));for(map<int,int>::iterator it=ch[q].begin();it!=ch[q].end();it++)ch[nq][it->first]=it->second;fa[nq]=fa[q];fa[q]=fa[cur]=nq;for(;ch[p][c]==q;p=fa[p])ch[p][c]=nq;}}
}
int main()
{n=read();for(int i=1;i<=n;i++)a[i]=a[i+n]=read();for(int i=1;i<=2*n;i++)ins(a[i],i);for(int i=1,nw=1;i<=n;i++){printf("%d ",ch[nw].begin()->first);nw=ch[nw].begin()->second;}return 0;
}

转载于:https://www.cnblogs.com/lokiii/p/10000966.html

bzoj 2882: 工艺【SAM】相关推荐

  1. BZOJ 4892: [Tjoi2017]DNA(SA+RMQ / SAM)

    Description 加里敦大学的生物研究所,发现了决定人喜不喜欢吃藕的基因序列S,有这个序列的碱基序列就会表现出喜欢吃藕的 性状,但是研究人员发现对碱基序列S,任意修改其中不超过3个碱基,依然能够 ...

  2. BZOJ 1921: [Ctsc2010]珠宝商 点分治套SAM

    题目链接 首先可以发现两种算法 一. 暴力处理 对"特征串"建SAM 枚举路径的一个端点,\(dfs\)另一个端点,同时维护在SAM上的位置. 每到一个位置会有SAM上对应节点的r ...

  3. [BZOJ]4180: 字符串计数 SAM+矩阵乘法+二分

    Description SD有一名神犇叫做Oxer,他觉得字符串的题目都太水了,于是便出了一道题来虐蒟蒻yts1999. 他给出了一个字符串T,字符串T中有且仅有4种字符 'A', 'B', 'C', ...

  4. 暑假集训 ---- 字符串2 (SAM专题)

    P1368 工艺 把串插入 S A M SAM SAM 插两次,然后贪心找最小字典序即可 [AHOI2013]差异 两个串的最长公共后缀就是后缀自动机上 lca 的长度 于是把两个串反过来,对于每一个 ...

  5. 论逗逼的自我修养——BZOJ第一页计划

    感觉都干了这么久BZOJ了,还没有上第一页有点对不起我的300块大洋,打算在WC前淦上第一页. upd 1. 2 : 以奇怪的姿势做完了cerc2014感觉感觉做了3天做了没几道不太水的题,今天又以刷 ...

  6. UOJ #395 BZOJ 5417 Luogu P4770 [NOI2018]你的名字 (后缀自动机、线段树合并)

    NOI2019考前做NOI2018题.. 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=5417 (luogu) http ...

  7. BZOJ 3277 串 BZOJ 3473 字符串 (广义后缀自动机、时间复杂度分析、启发式合并、线段树合并、主席树)...

    标签那么长是因为做法太多了... 题目链接: (bzoj 3277) https://www.lydsy.com/JudgeOnline/problem.php?id=3277 (bzoj 3473) ...

  8. BZOJ 3277 串 BZOJ 3473 字符串 (广义后缀自动机、时间复杂度分析)

    标签那么长是因为做法太多了... 题目链接: (bzoj 3277) https://www.lydsy.com/JudgeOnline/problem.php?id=3277 (bzoj 3473) ...

  9. BZOJ 2806 Luogu P4022 [CTSC2012]Cheat (广义后缀自动机、DP、二分、单调队列)

    题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=2806 (luogu) https://www.luogu.org/pro ...

最新文章

  1. 电脑硬件知识学习_DIY电脑多年,这些硬件冷知识你们知道吗?
  2. VTK:可视化之BoxClipStructuredPoints
  3. Kickstart+NFS+DHCP+TFTP+PXElinux实现CentOS的网络自动安装
  4. 从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装
  5. idea安装配置tomcat
  6. php5中文手册 pdf_tp5.0完全开发手册
  7. VirtualBox Share Folder配置
  8. Azkaban学习_Azkaban(阿兹卡班)介绍 + Azkaban 安装部署 + Azkaban 实战
  9. Duplicated tag: ‘dependencies‘报错
  10. 15+ Javascript 中的数组方法
  11. 【OpenCV实战】OpenCV实现人脸检测详解(含代码)
  12. 在 unity中可以使用的直接设置音量大小的方法
  13. 微软开源自有云服务器专属 Linux 发行版 CBL-Mariner,可在 GitHub 免费下载!
  14. 数控木雕机器雕工艺品
  15. java找不到文件_Java常见问题之javac Hello.java找不到文件的解决方法
  16. 深入RUST标准库内核(六)—Iterator
  17. 微信 android 闪退问题怎么解决方法,Android里微信分享时BUG,微信界面闪退
  18. 关闭Java11中即将移除Nashorn引擎的警告Warning: Nashorn engine is planned to be removed from a future JDK release
  19. 2022-算法设计与分析-实验6-数据结构、字符串
  20. html5足球网页效果图,HTML5 响应式足球新闻网站模板

热门文章

  1. 中国电子学会scratch等级考试二级
  2. echarts formatter_牛X!用 Echarts 打造一个轮播图!
  3. Vue第一部分(3):事件绑定与标签属性赋值
  4. Qt文档阅读笔记-数据驱动测试
  5. Web前端笔记-使用@media(媒体查询)展示及隐藏div
  6. OllyDbg笔记-对标志寄存器中ZF的理解(逆向方面)
  7. Qt工作笔记-进程间的通信(通过QSharedMemory)
  8. php 显示下拉菜单,PHP在下拉列表中显示菜单树
  9. 华为什么手机用的鸿蒙系统,华为2020年全线启用鸿蒙系统,手机、平板依然Android优先...
  10. 广告roi怎么计算公式_二类电商信息流广告投放注意这几方面