#include<cstdio>
#include<cstring>
using namespace std;
char a[],b[];
int sa[],x[],wv[],ws[],h[],rank[],wa[],wb[];
int cmp(int *r,int a,int b,int l){return (r[a]==r[b])&&(r[a+l]==r[b+l]);}
void calheight(int n,int *rank)
{
  int i,j,k=;
  for(i=;i<n;h[rank[i++]]=k)
  for(k?k--:,j=sa[rank[i]-];a[i+k]==a[j+k];k++);
}
void DA(char *r,int *sa,int n,int m)
{
  int i,j,k,*x=wa,*y=wb,*t,p;
  for(i=;i<m;i++)ws[i]=;
  for(i=;i<n;i++)ws[x[i]=r[i]]++;
  for(i=;i<m;i++)ws[i]+=ws[i-];
  for(i=n-;i>=;i--)sa[--ws[x[i]]]=i;
  for(j=,p=;p<n;j*=,m=p)
  {
    for(p=,i=n-j;i<n;i++)y[p++]=i;
    for(i=;i<n;i++)if(sa[i]>=j)y[p++]=sa[i]-j;
    for(i=;i<n;i++)wv[i]=x[y[i]];
    for(i=;i<m;i++)ws[i]=;
    for(i=;i<n;i++)ws[wv[i]]++;
    for(i=;i<m;i++)ws[i]+=ws[i-];
    for(i=n-;i>=;i--)sa[--ws[wv[i]]]=y[i];
    for(t=x,x=y,y=t,p=,x[sa[]]=,i=;i<n;i++)
    x[sa[i]]=cmp(y,sa[i-],sa[i],j)?p-:p++;
  }
  calheight(n,x);
}
int main()
{
  int la,lb,f_b,f_e,s_b,s_e,max,i,n;
  scanf("%s",a);
  la=strlen(a);
  scanf("\n");
  scanf("%s",b);
  lb=strlen(b);
  f_b=;
  f_e=la-;
  a[la]='#';
  s_b=la;
  for(i=;i<lb;i++)a[++la]=b[i];
  s_e=la;
  a[la+]=;
  DA(a,sa,la+,);
  //calheight(la+1);
  max=-0x7fffffff;
  for(i=;i<=la;i++)
  {
    if(h[i]>max&&((sa[i]>=f_b&&sa[i]<=f_e&&sa[i-]>=s_b&&sa[i-]<=s_e)||(sa[i]>=s_b&&sa[i]<=s_e&&sa[i-]>=f_b&&sa[i-]<=f_e)))max=h[i];
  }
  printf("%d",max);
  return ;
}

POJ2774 (后缀数组)的更多相关文章

  1. POJ2774 & 后缀数组模板题

    题意: 求两个字符串的LCP SOL: 模板题.连一起搞一搞就好了...主要是记录一下做(sha)题(bi)过程心(cao)得(dan)体(xin)会(qing) 后缀数组概念...还算是简单的,过程 ...

  2. poj2774 后缀数组2个字符串的最长公共子串

    Long Long Message Time Limit: 4000MS   Memory Limit: 131072K Total Submissions: 26601   Accepted: 10 ...

  3. poj2774 后缀数组 求最长公共子串

    Reference:IOI2009论文 http://www.cnblogs.com/ziyi--caolu/p/3192731.html #include "stdio.h" # ...

  4. Long Long Message (poj2774 后缀数组求最长公共子串)

    Long Long Message Time Limit: 4000MS   Memory Limit: 131072K Total Submissions: 19206   Accepted: 79 ...

  5. 【POJ2774】Long Long Message(后缀数组)

    [POJ2774]Long Long Message(后缀数组) 题面 Vjudge Description Little cat在Byterland的首都读物理专业.这些天他收到了一条悲伤地信息:他 ...

  6. POJ2774 Long Long Message —— 后缀数组 两字符串的最长公共子串

    题目链接:https://vjudge.net/problem/POJ-2774 Long Long Message Time Limit: 4000MS   Memory Limit: 131072 ...

  7. 【后缀数组】【poj2774】【 Long Long Message】

    题意: 求两个串的最长连续子串. 我的想法: 枚举第二个串...在第一个串的后缀数组中二分查找. 复杂度NlogN.最坏情况N^2 题解: (3)height 数组:定义height[i]=suffi ...

  8. poj2774 Long Long Message 后缀数组求最长公共子串

    题目链接:http://poj.org/problem?id=2774 这是一道很好的后缀数组的入门题目 题意:给你两个字符串,然后求这两个的字符串的最长连续的公共子串 一般用后缀数组解决的两个字符串 ...

  9. poj2774(后缀数组水题)

    http://poj.org/problem?id=2774 题意:给你两串字符,要你找出在这两串字符中都出现过的最长子串......... 思路:先用个分隔符将两个字符串连接起来,再用后缀数组求出h ...

随机推荐

  1. nginx expires

    配置expiresexpires起到控制页面缓存的作用,合理的配置expires可以减少很多服务器的请求要配置expires,可以在http段中或者server段中或者location段中加入   1 ...

  2. JS 拼接字符串数组

    1.格式1 1.1例子 [ {name: '北京',value: Math.round(Math.random()*1000)}, {name: '天津',value: Math.round(Math ...

  3. Angular Mobile UI API文档

    这个是angular-mobile-ui的主要模块 应用这个模块你也将同时获取到mobile-angular-ui.core和mobile-angular-ui.components的特性 他不在需要 ...

  4. 对teacher表进行增加,删除,修改

    <%@page import="java.text.SimpleDateFormat"%> <%@ page language="java" ...

  5. 微信小程序-设备

    网络状态: wx.getNetworkType(OBJECT) 获取网络类型. OBJECT参数说明: wx.getNetworkType({ success: function(res) { var ...

  6. mySQL数据库Sql语句执行效率检查--Explain命令

    mysql性能的检查和调优方法 Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的 ...

  7. left和offsetLeft

    left: 1.当该对象的定位position为absolute时left是相对于拥有定位属性(position的值为默认值"static"时除外)的父级对象的左边距. 例1:当父 ...

  8. [SQL] SQL 查出一张表中重复的所有记录

    在A表中存在一个字段“AccountId”,而且不同记录之间的“AccountId”值有可能会相同,现在就是需要查询出在该表中的各记录之间,“AccountId”值存在重复的项,这里count记录该字 ...

  9. 【java项目小记--JManager】项目开始原因及github部署

    --记于2016-8-11 毕业已三载,忽然想起大学时的毕业设计项目,想到曾在毕业答辩上说,会吸取老师点评并逐渐完善该项目.而今 老师点评已忘了个干净,项目也还是毕业时的样子,正好最近有些时间,打算兑 ...

  10. Win10重复按键盘经常按不出?Win10关闭筛选键步骤

    在Win10系统中,有用户发现,有时重复按一个键位,经常会出现打不出字符的情况,导致输入效率降低,其实这很有可能是你开启了筛选键导致,筛选键帮助用户忽略那些短时间的按键动作,下面我们就来看看win10 ...