看上去比较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. 设计模式 之美 -- 面向对象(C/C++分别实现)
  2. 图(1)——图的定义和基本概念
  3. XO Wave-数字音频编纂软件
  4. 图解Google Android内核编译教程
  5. luogu P1027 Car的旅行路线
  6. 对称加密-DES解密
  7. 选择湿度传感器注意的若干问题
  8. 2018年全球智能手机销售收入增至5220亿美元 但销量却下降了
  9. [Active Learning] Multi-Criteria-based Active Learning
  10. linux命令last格式,Linux last和lastlog命令:查看过去登陆的用户信息
  11. 关于IRR的一些总结
  12. 我的世界空岛生存服务器制作,《我的世界》空岛生存地图玩法 教你如何安全度过前期生存下去...
  13. 假设有长度为5的数组
  14. 一张照片让你的安卓手机崩溃
  15. matlab qua2d,matlab 几个关于GPS/INS和GPS/AHRS的程序 - 下载 - 搜珍网
  16. Google算法更新记录-你想了解的全在这
  17. 学神乔明达和他堪称神迹的学习履历
  18. Java 版 Prim 算法求最小生成树
  19. 基于SNMP的信息刺探扫描与防护策略
  20. Qt Linguist 介绍

热门文章

  1. python语言程序设计编程题_Python语言程序设计(测试练习题)
  2. 10000个科学难题书籍介绍
  3. Android学习之网上商城(上)
  4. 计算机系统设计原理当当,操作系统精髓与设计原理
  5. 基于MATLAB的图像压缩感知设计(含源文件)
  6. 信息安全工程师笔记-案例分析(三)
  7. Qt文档阅读笔记-QtConcurrent Progress Dialog Example解析
  8. Qt工作笔记-以配置文件的方式动态获取Mysql数据库中的数据
  9. java编写一个程序_计算已知长和宽的长方形的周长,请教一下大佬们,我们java留了一个作业,编写程序,定义一个接口Comput,声明计算周长和面积的方法...
  10. php符号 set,PHP 符号大全