2013 长春网络赛 1005 Theme Section
来源:互联网 发布:开淘宝大概费用是多少 编辑:程序博客网 时间:2024/04/29 05:22
给出字符串,形如EAEBE,求E最长长度。
先求kmp的next数组,那么对第i个字符,str[0,next[i]]与str[i-next[i],i]相同。现在找出尾部的E,然后去查找中间的E是否满足长度为next[len-1],
当不满足时,j=next[j],缩短与首部的匹配长度,这样直到j=-1为止。
#include <cstdio>#include <cstring>#include <iostream>using namespace std;typedef long long ll;const int maxn=1000001;char str[maxn];int next[maxn];int main(){ freopen("in.txt","r",stdin); int n,j,len; scanf("%d",&n); while(n--) { scanf("%s",str); next[0]=-1,j=-1; len=strlen(str);// cout<<str<<endl; for(int i=1;i<len;i++) { while(j>=0&&str[i]!=str[j+1]) { j=next[j]; } if(str[i]==str[j+1]) j++; next[i]=j;// cout<<i<<" "<<j<<endl; } int ans=0,j=len-1; while(next[j]>=0) {// cout<<next[j]<<endl; if(next[j]>len/3) { j=next[j]; } else { for(int i=next[j]+1;i<len-next[j];i++) { if(next[i]==next[j]) { ans=next[i]+1; break; } } } j=next[j]; if(ans||j==-1) break; } printf("%d\n",ans); } return 0;}
- 2013 长春网络赛 1005 Theme Section
- 2013长春网络赛
- java大数(2013长春网络赛)--hdu4762
- 2013年ACM网络赛长春赛区
- 2013长春网络赛 1006 Stone
- 2013长春网络赛 1010 Flyer
- HDU 4763 2013长春网络赛 KMP
- 2012长春网络赛
- 长春网络赛hdu4272LianLianKan
- 2012长春网络赛
- 2015长春网络赛
- Theme Section
- Theme Section
- 2012长春网络赛1011
- HDU4267(2012长春网络赛)
- 2015长春网络赛小结
- 长春网络赛 travel hdu5441
- Hdu 4768 Flyer(2013长春网络赛)
- oracle 存储过程无法单步调试
- [JNI] java 多线程调用native 方法
- sql查询-分组
- AndroidHttp通信 HTTP Client与HttpURLConnection的区别
- Java自动生成mybatis更新sql语句
- 2013 长春网络赛 1005 Theme Section
- 小米的兵法
- 关于ubuntu的apt-get和安装目录
- C++解析JSON之JsonCPP
- IIS & Application Pool & App Domain & ...
- tar 压缩和解压缩使用笔记
- android颜色对应的xml配置值,颜色表
- Log4j启动过程
- linux内核--进程地址空间(三)