hdu 2594-Simpsons’ Hidden Talents(KMP)
题意:
给你两个串a,b,求既是a的前缀又是b的后缀的最长子串的长度。
分析:
很自然的想到把两个串连接起来,根据KMP的性质求即可
#include <map>
#include <set>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <vector>
#include <string>
#include <cctype>
#include <complex>
#include <cassert>
#include <utility>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
typedef pair<int,int> PII;
typedef long long ll;
#define lson l,m,rt<<1
#define pi acos(-1.0)
#define rson m+1,r,rt<<11
#define All 1,N,1
#define N 50010
#define read freopen("in.txt", "r", stdin)
const ll INFll = 0x3f3f3f3f3f3f3f3fLL;
const int INF= 0x7ffffff;
const int mod = ;
char a[N*],b[N];
int f[N*];
void getnext(int n){
int i=,j=-;
f[]=-;
while(i<n){
if(j==-||a[i]==a[j]){
i++;
j++;
f[i]=j;
}
else
j=f[j];
}
}
void solve(){
int len1=strlen(a);
int len2=strlen(b);
strcat(a,b);
int tmp=len1+len2;
getnext(tmp);
//必须是两串的子串
while(f[tmp]>len1)tmp=f[tmp];
while(f[tmp]>len2)tmp=f[tmp];
if(f[tmp]==)
printf("0\n");
else{
for(int i=;i<f[tmp];++i)
printf("%c",a[i]);
printf(" %d\n",f[tmp]);
}
}
int main()
{
while(~scanf("%s%s",a,b)){
solve();
}
return ;
}
hdu 2594-Simpsons’ Hidden Talents(KMP)的更多相关文章
- HDU 2594 Simpsons’ Hidden Talents (KMP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2594 这题直接用KMP算法就能够做出来,只是我还尝试了用扩展的kmp,这题用扩展的KMP效率没那么高. ...
- HDU 2594 Simpsons’ Hidden Talents(KMP的Next数组应用)
Simpsons’ Hidden Talents Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
- HDU 2594 Simpsons’ Hidden Talents(辛普森一家的潜在天赋)
HDU 2594 Simpsons’ Hidden Talents(辛普森一家的潜在天赋) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 3 ...
- hdu 2594 Simpsons’ Hidden Talents(两个串的next数组)
题意:两个字符串s.t,求s和t的最长的相同的前缀和后缀 思路:先求s的next数组,再求t的next数组(即代码中ex数组,此时不是自己与自己匹配,而是与s匹配),最后看ex[len2]即可(len ...
- hdu 2594 Simpsons’ Hidden Talents 【KMP】
题目链接:http://acm.acmcoder.com/showproblem.php?pid=2594 题意:求最长的串 同一时候是s1的前缀又是s2的后缀.输出子串和长度. 思路:kmp 代码: ...
- hdu 2594 Simpsons’ Hidden Talents(扩展kmp)
Problem Description Homer: Marge, I just figured out a way to discover some of the talents we weren’ ...
- hdu 2594 Simpsons’ Hidden Talents KMP
Simpsons’ Hidden Talents Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
- hdu 2594 Simpsons’ Hidden Talents KMP应用
Simpsons’ Hidden Talents Problem Description Write a program that, when given strings s1 and s2, fin ...
- hdu 2594 Simpsons’ Hidden Talents(KMP入门)
Simpsons’ Hidden Talents Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
- hdoj 2594 Simpsons’ Hidden Talents 【KMP】【求串的最长公共前缀后缀】
Simpsons' Hidden Talents Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
随机推荐
- 套题T7
P4712 铺瓷砖 时间: 1000ms / 空间: 65536KiB / Java类名: Main 描述
- 李洪强iOS开发之【Objective-C】09-空指针和野指针
一.什么是空指针和野指针 1.空指针 1> 没有存储任何内存地址的指针就称为空指针(NULL指针) 2> 空指针就是被赋值为0的指针,在没有被具体初始化之前,其值为0. 下面两个都是空指针 ...
- Matlab程序 转C++/Opencv基于Mat 不可不知的17个函数
1.matlab中的imread相当于OpenCV中的cvLoadImage(imageName, CV_LOAD_IAMGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR): ...
- 500G JAVA视频网盘分享 (Jeecg社区)
http://blog.csdn.net/zhangdaiscott/article/details/18220411 csdn 排名400多名 500 G JAVA视频网盘分享(Jeecg社区 ...
- 服务器端json解析
1.客户端通过http传上来的可定都是json数据啊,json数据传到服务器端,就要通过键值对getkey方法得到具体值,对吧,然后再操控具体值. 2.JSONObject与JSONArray: Js ...
- PHP获取服务器的mac地址类
PHP获取服务器的mac地址类,不是客户端的. <?php class GetMacAddr{ var $return_array = array(); // 返回带有MAC地址的字串数组 va ...
- 在屏幕上显示C盘根目录下的所有文件和文件夹
1 import java.io.File; //在屏幕上显示C盘根目录下的所有文件和文件夹 public class ListDemo { public static void main(Strin ...
- !!流行的php面试题及答案
分类: 1.在PHP中,当前脚本的名称(不包括路径和查询字符串)记录在预定义变量(1)中:而链接到当前页面的URL记录在预定义变量(2)中. 答:echo $_SERVER['PHP_SELF']; ...
- MyEclipse Blue Edition 6.5 注册码生成程序
import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.SimpleDateFormat; im ...
- libXml ARC forbids explicit message send of'release'
'release' is unavailable: not available in automatic reference counting mode ARC forbids explicit me ...