cogs1713 [POJ2774]很长的信息
cogs1713 [POJ2774]很长的信息
原题链接
题解
把两串拼成A+'%'+B+'$'。跑后缀数组然后相邻两点i,i+1不在同一串里就用ht[i]更新答案。
好裸。。。
Code
// It is made by XZZ
#include<cstdio>
#include<algorithm>
#include<cstring>
#define Fname "lcs"
using namespace std;
#define rep(a,b,c) for(rg int a=b;a<=c;a++)
#define drep(a,b,c) for(rg int a=b;a>=c;a--)
#define erep(a,b) for(rg int a=fir[b];a;a=nxt[a])
#define il inline
#define rg register
#define vd void
typedef long long ll;
il int gi(){
rg int x=0;rg char ch=getchar();
while(ch<'0'||ch>'9')ch=getchar();
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return x;
}
const int maxn=1200010;
char A[maxn],B[maxn];
int a,b;
int n,s[maxn],m;
int sa[maxn],rk[maxn],tmp[maxn],buc[maxn],ht[maxn];
il vd Qsort(){
rep(i,0,m)buc[i]=0;
rep(i,1,n)buc[rk[tmp[i]]]++;
rep(i,1,m)buc[i]+=buc[i-1];
drep(i,n,1)sa[buc[rk[tmp[i]]]--]=tmp[i];
}
il bool cmp(int*h,int a,int b,int l){return h[a]==h[b]&&h[a+l]==h[b+l];}
il vd solve(){
m=127;
rep(i,1,n)rk[i]=s[i],tmp[i]=i;
Qsort();
int p=0;
for(rg int l=1;p<n;l<<=1){
p=0;
rep(i,n-l+1,n)tmp[++p]=i;
rep(i,1,n)if(sa[i]>l)tmp[++p]=sa[i]-l;
Qsort();
rep(i,1,n)tmp[i]=rk[i];
p=rk[sa[1]]=1;
rep(i,2,n)
if(cmp(tmp,sa[i],sa[i-1],l))rk[sa[i]]=p;
else rk[sa[i]]=++p;
m=p;
}
p=0;
rep(i,1,n)sa[rk[i]]=i;
rep(i,1,n){
if(p)--p;
if(rk[i]==n)continue;
while(s[i+p]==s[sa[rk[i]+1]+p])++p;
ht[rk[i]]=p;
}
}
il bool check(int&x,int&y){
if(x<=a&&y>a+1)return 1;
if(y<=a&&x>a+1)return 1;
return 0;
}
int main(){
freopen(Fname".in","r",stdin);
freopen(Fname".out","w",stdout);
scanf("%s%s",A+1,B+1);
a=strlen(A+1),b=strlen(B+1);
rep(i,1,a)s[++n]=A[i];
s[++n]='%';
rep(i,1,b)s[++n]=B[i];
s[n+1]='$';
solve();
int ans=0;
rep(i,1,n-1)if(check(sa[i],sa[i+1]))ans=max(ans,ht[i]);
printf("%d\n",ans);
return 0;
}
cogs1713 [POJ2774]很长的信息的更多相关文章
- POJ2774 很长的信息
Description Little cat在Byterland的首都读物理专业.这些天他收到了一条悲伤地信息:他的母亲生病了.担心买火车票花钱太多(Byterland是一个巨大的国家,因此他坐火车回 ...
- Springmvc+Hibernate在Eclipse启动Tomcat需要很长时间的解决方法
最近在学习SpringMvc开发,有一个提问困扰了很久,就是在Eclipse启动Tomcat需要很长时间,大概要1分多钟. 启动日志: 九月 08, 2016 8:59:01 下午 org.apach ...
- 【生产问题】记还原一个很小的BAK文件,但却花了很长时间,分析过程
[生产问题]还原一个很小的BAK文件,但却花了很长时间? 关键词:备份时事务日志太大会发生什么?还原时,事务日志太大会怎么办? 1.前提: [1.1]原库数据已经丢失,只有这个bak了 [1.2]ba ...
- elasticsearch的store属性跟_source字段——如果你的文档长度很长,存储了_source,从_source中获取field的代价很大,你可以显式的将某些field的store属性设置为yes,否则设置为no
转自:http://kangrui.iteye.com/blog/2262860 众所周知_source字段存储的是索引的原始内容,那store属性的设置是为何呢?es为什么要把store的默认取值设 ...
- 专访黄勇:Java在未来的很长一段时间仍是主流(把老板当情人,把同事当小孩,把客户当病人)
url:http://www.csdn.net/article/2015-09-06/2825621 2015-09-06 13:18 摘要:本文采访了现任阿里巴巴公司系统架构师黄勇,从事近十年的Ja ...
- mvc中多参数URL会很长,首次加载不传参数让url很短,路由规则实现方法[bubuko.com]
如要实现列表中地址全路径“bubuko-11-2.html”,在首次进入时,使用短路径“bubuko.html”,只有再次href后才显示全路径“bubuko-11-2.html”,下面使用路由规则来 ...
- 为什么drop table的时候要在checking permissions花很长时间?
昨天,我drop一个表的时候在checking permissions花了20s+,这个时间花在哪里了呢?经常查找发现我的配置文件innodb_file_per_table=1的,innodb需要遍历 ...
- java 将长度很长的字符串(巨大字符串超过4000字节)插入oracle的clob字段时会报错的解决方案
直接很长的字符串插入到clob字段中会报字符过长的异常,相信大家都会碰到这种情况 String sql = "insert into table(request_id,table_name, ...
- 【转】android中重复连接ble设备导致的连接后直接返回STATE_DISCONNECTED的解决办法---不错不错,重新连接需要花费很长的时间
原文网址:http://bbs.eeworld.com.cn/thread-438571-1-1.html /* * 通过使用if(gatt==null ...
随机推荐
- UVa 11346 - Probability(几何概型)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- 32、SpringBoot-整合Dubbo
分布式应用 在分布式系统中,国内常用zookeeper+dubbo组合,而Spring Boot推荐使用全栈的Spring, Spring Boot+Spring Cloud. 分布式系统: Zook ...
- 2019.3.6 Github学习 &Git学习
Github学习 1.使用Github 1.1 目的 借助github托管项目代码 1.2 基本概念 仓库(Repository) 仓库的意思是:即你的项目,你想在Github上开源一个项目,那就必须 ...
- Linux环境变量及其设置
简介 环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或多个应用程序将使用到的信息.Linux是一个多用户的操作系统,每个用户登录系统时都会有一个专用的运行环境,通常情况下每个用户的默认的环 ...
- ubuntu查询命令行安装的软件的安装路径
which git // 查询git的安装路径
- Linux本地数据上传到阿里云OSS
这篇文章主要是介绍如何将服务器本地的数据上传到阿里云OSS的指定bucket中,最重要的参考文档是数据迁移单机部署.我第一次上传数据到OSS上时,步骤要比前面的链接中介绍的要麻烦,ossimport工 ...
- jquery checkbox点选反选
<script type="text/javascript"> $(function(){ //点选反选 $("#check_all").click ...
- iOS12适配及问题记录,Debug正常使用,Release数据为nil的报错
Debug模式数据一切正常,打包出去的ipa,Release模式下数据为nil的错误,经排查,buiding中的Optimization Level, Release设为None,解决问题. IOS1 ...
- Notes 20180506 : Java程序设计语言概述
2.Java程序设计语言概述 如果对于开发语言的排行榜有所关注的话,那么会发现很长一段时间以来Java都是位居榜首的高级开发语言,作为一个Java开发者,为此感到骄傲的同时也深感忧虑,骄傲的是自己接触 ...
- Extjs6 怎么重写框架的类
创建一个覆写(override)类的推荐方法如下: Ext.define('MyApp.overrides.panel.Panel', { override: 'Ext.panel.Panel', c ...