传送门:http://begin.lydsy.com/JudgeOnline/problem.php?id=2796

题解:后缀自动机,很裸,但是感觉对后缀自动机还不是特别理解,毕竟我太蒟蒻,等我精通了,再写对它的理解吧。。。

   还有写这道题的时候发现数组下标又时候是负数竟然不会爆。。。。。。因为这道题有大写也有小写,可我只开了26竟然A了(后面才发现)。。。。懒得改了

代码:

 #include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#define N 250005
using namespace std;
struct data{
int go[],val,fa;
}son[N*];
int n,m,tot,last,root,sum,ans;
char s[N],c[N];
int newnode(int x){son[++tot].val=son[x].val+; return tot;}
void extend(int x)
{
int p=last,np=newnode(p);
while (p && !son[p].go[x]) son[p].go[x]=np,p=son[p].fa;
if (!p) son[np].fa=root;
else
{
int q=son[p].go[x];
if (son[q].val==son[p].val+) son[np].fa=q;
else
{
int nq=newnode(p);
memcpy(son[nq].go,son[q].go,sizeof(son[q].go));
son[nq].fa=son[q].fa;
son[q].fa=son[np].fa=nq;
while (p && son[p].go[x]==q) son[p].go[x]=nq,p=son[p].fa;
}
}
last=np;
}
int main()
{
last=root=tot=;
scanf("%s",s+); scanf("%s",c+);
n=strlen(s+); m=strlen(c+);
for (int i=; i<=n; i++) extend(s[i]-'a');
for(int i=,pp=root;i<=m;i++){
int f=c[i]-'a';
if(son[pp].go[f]) sum++,pp=son[pp].go[f];
else{
while(pp && !son[pp].go[f]) pp=son[pp].fa;
if(pp) sum=son[pp].val+,pp=son[pp].go[f];
else sum=,pp=root;
}
ans=max(ans,sum);
}
printf("%d\n",ans);
}

最新文章

  1. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理2
  2. 转载:java程序打包成jar 配置文件信息路径
  3. C#复习⑧
  4. 用live writer写博客
  5. C++中 :: 的意思
  6. 161114、websocket实现心跳重连
  7. Mysql-学习笔记(==》插入修改数据二)
  8. [html] 前端角度出发做好SEO需要考虑什么
  9. SonarLint插件的安装与使用
  10. qt 状态栏
  11. 课堂里学不到的C与C++那些事(一)
  12. MVC5学习相关资源整理
  13. escape、unescape、encodeURIComponent、decodeURLComponent
  14. 【vue】函数式组件
  15. TypeScript: type alias 与 interface
  16. Oracle使用PLSQL导入数据后中文乱码的解决方法
  17. Unity3D游戏开发框架-资源管理类ResourceManage
  18. Android之sqlite3命令行简单使用
  19. hdu-1061(快速幂)
  20. Swift2.0语言教程之类的属性

热门文章

  1. 微信小程序实例教程(一)
  2. What is “Mock You” :Raise,callback,verify [转载]
  3. Nginx反向代理使用【转载】
  4. jvm attach
  5. SQL Server2008数据库中删除用户,提示数据库主体在该数据库中拥有 架构,无法删除
  6. POJ 1426 Find The Multiple BFS
  7. FOJ 2206 函数求解
  8. PHP文件夹操作
  9. Swift中的异常处理
  10. Deep learning:三十八(Stacked CNN简单介绍)