这题有毒……

原本只是想复习下sam,于是写……

后来发现自己傻了不知道怎么维护endpos……

一气之下直接kmp拉倒,mdzz

UPD:现在我好像会维护endpos了……

#include<bits/stdc++.h>
#define N 100010
using namespace std;
int a[N],l,n,b[N],t,nxt[N];
struct Suffix_AutoMaton{
int cnt,last,ch[N][],l[N],r[N],fa[N];
void ins(int c,int pos){
int p=last,np=++cnt;last=np;l[np]=pos;r[np]=pos;
for(;p&&!ch[p][c];p=fa[p])ch[p][c]=np;
if(!p)fa[np]=;
else{
int q=ch[p][c];
if(l[p]+==l[q])fa[np]=q,r[q]=pos;
else{
int nq=++cnt;l[nq]=l[p]+;
memcpy(ch[nq],ch[q],sizeof(ch[q]));
fa[nq]=fa[q];fa[q]=fa[np]=nq;r[nq]=pos;
for(;p&&ch[p][c]==q;p=fa[p])ch[p][c]=nq;
}
}
}
Suffix_AutoMaton(){last=cnt=;}
void build(int *a,int n){for(int i=;i<=n;i++)ins(a[i],i);}
inline int get(int *a,int n){
int k=;for(int i=;i<=n;i++)k=ch[k][a[i]];
return k;
}
}sam;
inline char read(){
char c=getchar();
while(c<'a'||c>'z')c=getchar();
return c;
}
int main(){
char c=read();
while(c>='a'&&c<='z')a[++l]=c-'a',c=getchar();
sam.build(a,l);scanf("%d",&n);
while(n--){
t=;char c=read();
while(c>='a'&&c<='z')b[++t]=c-'a',c=getchar();
int s=sam.get(b,t);
for(int j=sam.r[s]-sam.l[sam.fa[s]];j<=sam.r[s];j++)printf("%c",a[j]+'a');putchar(' ');
for(int j=sam.r[s]-sam.l[s]+;j<=sam.r[s];j++)printf("%c",a[j]+'a');
nxt[]=;
for(int i=,j=;i<=t;i++){
while(j&&b[i]!=b[j+])j=nxt[j];
j+=b[i]==b[j+];
nxt[i]=j;
}
for(int i=,j=;i<=l;++i){
while(j&&a[i]!=b[j+])j=nxt[j];
if(a[i]==b[j+])++j;
if(j==t)printf(" %d",i),j=nxt[j];
}
puts("");
}
}

最新文章

  1. POJ Challenge消失之物
  2. 抽象类&amp;接口
  3. SQL*Loader之CASE6
  4. Window7 驱动编程环境配置
  5. MSP430设置串口波特率的方法
  6. [改善Java代码]易变业务使用脚本语言编写
  7. 【HDOJ】1175 连连看
  8. Object-C知识点 (三) 单例 蒙版 刷新 KVO底层
  9. YYHS-挑战nbc
  10. 【BZOJ1483】【HNOI2009】梦幻布丁
  11. C语言设计第一次作业
  12. 微信小程序之弹出操作菜单
  13. 利用Python+163邮箱授权码发送邮件
  14. 简单Nginx下防跨站、跨目录安全设置,支持PHP 5.3.3以上版本
  15. Qt+QGis二次开发:矢量图层的显示样式
  16. nginx负载均衡fair方式分发
  17. 【Jenkins】Jenkins安装修改默认路径和端口的方法
  18. Java变量的初始值
  19. Python图片识别找坐标(appium通过识别图片点击坐标)
  20. 转:【衬线字体与无衬线字体】font-family之Serif和Sans-Serif

热门文章

  1. BZOJ 2460 元素(贪心+线性基)
  2. 【刷题】BZOJ 1717 [Usaco2006 Dec]Milk Patterns 产奶的模式
  3. [NOIP2012]疫情控制 贪心 二分
  4. BZOJ1801:[AHOI2009]中国象棋——题解
  5. bzoj4773: 负环(倍增floyd)
  6. 51nod 1215 数组的宽度&amp;poj 2796 Feel Good(单调栈)
  7. BAT-Python面试题
  8. 用CSS3实现的addidas阿迪达斯标志LOGO
  9. bzoj 1135 [POI2009]Lyz 线段树+hall定理
  10. HDU1078记忆化搜索