http://acm.hdu.edu.cn/showproblem.php?pid=2594

EXKMP详解https://blog.csdn.net/dyx404514/article/details/41831947

EXKMP解法

裸题 存模板

#include <bits/stdc++.h>
using namespace std;
const int maxn=5e4+10;int nxtt[maxn],nxts[maxn];
char ch1[maxn],ch2[maxn];
int n1,n2;void exkmp(char *t,int lt)
{int i,j,p;nxtt[0]=lt;i=0;while(i+1<lt&&t[i]==t[i+1]) i++;nxtt[1]=i;p=1;for(i=2;i<lt;i++){if(i+nxtt[i-p]<p+nxtt[p]) nxtt[i]=nxtt[i-p];else{j=max(0,p+nxtt[p]-i);while(i+j<lt&&t[j]==t[i+j]) j++;nxtt[i]=j;p=i;}}
}void solve(char *s,int ls,char *t,int lt)
{int i,j,p;i=0;while(i<ls&&i<lt&&s[i]==t[i]) i++;nxts[0]=i;p=0;for(i=1;i<ls;i++){if(i+nxtt[i-p]<p+nxts[p]) nxts[i]=nxtt[i-p];else{j=max(0,p+nxts[p]-i);while(i+j<ls&&j<lt&&s[i+j]==t[j]) j++;nxts[i]=j;p=i;}}
}int main()
{int i,ans;while(scanf("%s%s",ch1,ch2)!=EOF){n1=strlen(ch1),n2=strlen(ch2);exkmp(ch1,n1);solve(ch2,n2,ch1,n1);ans=0;for(i=0;i<n2;i++){if(i+nxts[i]==n2){ans=nxts[i];break;}}if(ans>0){for(i=0;i<ans;i++) printf("%c",ch1[i]);printf(" ");}printf("%d\n",ans);}return 0;
}

KMP解法

也是裸题 nxts[i]代表后缀si与t的最长公共前缀

#include <bits/stdc++.h>
using namespace std;
const int maxn=5e4+10;int nxtt[maxn],nxts[maxn];
char ch1[maxn],ch2[maxn];
int l1,l2;void kmp(char *t,int lt)
{int i,j;nxtt[0]=-1;i=0,j=-1;while(i<lt){if(j==-1||t[i]==t[j]){i++,j++;nxtt[i]=j;}else j=nxtt[j];}
}void solve(char *s,int ls,char *t,int lt)
{int i,j;i=0,j=0;while(i<ls){if(j==-1||s[i]==t[j]){i++,j++;nxts[i]=j;if(j==lt) j=nxtt[j];}else j=nxtt[j];}
}int main()
{int i,p,ans;while(scanf("%s%s",ch1,ch2)!=EOF){l1=strlen(ch1),l2=strlen(ch2);kmp(ch1,l1);solve(ch2,l2,ch1,l1);if(nxts[l2]>0){for(i=0;i<nxts[l2];i++){printf("%c",ch1[i]);}printf(" ");}printf("%d\n",nxts[l2]);}return 0;
}//aba babab

Simpsons’ Hidden Talents HDU - 2594相关推荐

  1. HDU 2594 Simpsons’ Hidden Talents (字符串-KMP)

    Simpsons' Hidden Talents Problem Description Homer: Marge, I just figured out a way to discover some ...

  2. Simpsons’ Hidden Talents(辛普森一家的隐藏天赋 )(kmp经典模板题) HDU - 2594

    题目:Simpsons' Hidden Talents(辛普森一家的隐藏天赋 ) 中文大意 Homer: Marge, I just figured out a way to discover som ...

  3. kmp总结(相关例题1. Simpsons’ Hidden Talents 2.Oulipo)

    kmp相关及相关例题 文章目录 kmp相关及相关例题 一.kmp算法最常规使用方法 二.相关例题 1. Simpsons' Hidden Talents 2.Oulipo 一.kmp算法最常规使用方法 ...

  4. HDU2594(Simpsons’ Hidden Talents)

    Simpsons' Hidden Talents Problem Description Homer: Marge, I just figured out a way to discover some ...

  5. B - Simpsons’ Hidden Talents

    B - Simpsons' Hidden Talents Homer: Marge, I just figured out a way to discover some of the talents ...

  6. HDU-2594 Simpsons’ Hidden Talents

    HDU-2594 Simpsons' Hidden Talents 题目链接:HDU-2594 题目大意:给定两个字符串 问第一个字符串前缀与第二个字符串的后缀的最大的重复部分有多长 不为0的话将他们 ...

  7. Simpsons’ Hidden Talents (HDU-2594)

    Simpsons' Hidden Talents (HDU-2594) Homer: Marge, I just figured out a way to discover some of the t ...

  8. Simpsons’ Hidden Talents(KMP ,两个串的前后缀匹配)

    Simpsons' Hidden Talents 题目 给两个串,求S1的前缀和S2的后缀的最大匹配 思路 拼接两个串,处理出nxt数组,nxt[k] 即为所求,因为它们的最大匹配不能超过原串的长度, ...

  9. Simpsons’ Hidden Talents辛普森一家的隐藏天赋(next数组和kmp字符串匹配)

    辛普森一家的隐藏天赋 HDU - 2594 目录 辛普森一家的隐藏天赋 HDU - 2594 题意描述:当给定字符串s1和s2时,找到s1中最长的前缀,即s2的后缀.如果有,输出相同的字符串即字符串长 ...

最新文章

  1. appium-java长按学习
  2. android中关于手机屏幕的相关操作(获取屏幕的宽高等操作)
  3. GDCM:gdcm::Defs的测试程序
  4. maple里面怎么搜索_C#基础系列06 全栈第三步 说好的增加搜索
  5. 【Qt】数据库用户接口层
  6. 打印速度快点的打印机_SLM推出了功能强大的新型金属3D打印机,速度快20倍
  7. PAT1130. Infix Expression (25) 中序遍历
  8. springboot 设置ico_Spring Boot--Thymeleaf模板引擎/静态页面
  9. freetype在Linux平台编译小记
  10. 【codevs1220】数字三角形
  11. maven+springMvc+velocity
  12. android rtorrent 编译,rtorrent交叉编译
  13. 大学计算机第一学期期末考试试题,《大学计算机基础》期末考试试题(A卷)..doc...
  14. 数据结构与算法分析,哪本数据结构教材比较合适
  15. WIN10_修改用户名
  16. python交易是什么意思_Py交易是什么意思?Py交易是什么梗?
  17. 如何等比例调整图片大小?
  18. 湖南省第八届大学生计算机程序设计竞赛获奖名单
  19. Navicat Premium 12 免安装版
  20. 自适共振神经网络算法 ART 算法 代码实现

热门文章

  1. html中role的作用
  2. 编码的奥秘:图形化革命
  3. 据说能答对5道题的人是天才,答对4道的是帅才,答对3道的是将才,答对2道的是奇才,答对1道的是人才
  4. 女朋友乱用Git,差点把我代码删了。。。
  5. windows彻底删除idea
  6. Zephyr_FileSystems
  7. USB 3G上网卡讲解之一
  8. UML九图之三(状态图)
  9. 王志东预言中国门户网站大趋势
  10. Git切换分支报错:error:pathspec ‘dev‘ did not ma tch any file(s) known to git.