Simpsons’ Hidden Talents HDU - 2594
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相关推荐
- HDU 2594 Simpsons’ Hidden Talents (字符串-KMP)
Simpsons' Hidden Talents Problem Description Homer: Marge, I just figured out a way to discover some ...
- Simpsons’ Hidden Talents(辛普森一家的隐藏天赋 )(kmp经典模板题) HDU - 2594
题目:Simpsons' Hidden Talents(辛普森一家的隐藏天赋 ) 中文大意 Homer: Marge, I just figured out a way to discover som ...
- kmp总结(相关例题1. Simpsons’ Hidden Talents 2.Oulipo)
kmp相关及相关例题 文章目录 kmp相关及相关例题 一.kmp算法最常规使用方法 二.相关例题 1. Simpsons' Hidden Talents 2.Oulipo 一.kmp算法最常规使用方法 ...
- HDU2594(Simpsons’ Hidden Talents)
Simpsons' Hidden Talents Problem Description Homer: Marge, I just figured out a way to discover some ...
- B - Simpsons’ Hidden Talents
B - Simpsons' Hidden Talents Homer: Marge, I just figured out a way to discover some of the talents ...
- HDU-2594 Simpsons’ Hidden Talents
HDU-2594 Simpsons' Hidden Talents 题目链接:HDU-2594 题目大意:给定两个字符串 问第一个字符串前缀与第二个字符串的后缀的最大的重复部分有多长 不为0的话将他们 ...
- Simpsons’ Hidden Talents (HDU-2594)
Simpsons' Hidden Talents (HDU-2594) Homer: Marge, I just figured out a way to discover some of the t ...
- Simpsons’ Hidden Talents(KMP ,两个串的前后缀匹配)
Simpsons' Hidden Talents 题目 给两个串,求S1的前缀和S2的后缀的最大匹配 思路 拼接两个串,处理出nxt数组,nxt[k] 即为所求,因为它们的最大匹配不能超过原串的长度, ...
- Simpsons’ Hidden Talents辛普森一家的隐藏天赋(next数组和kmp字符串匹配)
辛普森一家的隐藏天赋 HDU - 2594 目录 辛普森一家的隐藏天赋 HDU - 2594 题意描述:当给定字符串s1和s2时,找到s1中最长的前缀,即s2的后缀.如果有,输出相同的字符串即字符串长 ...
最新文章
- appium-java长按学习
- android中关于手机屏幕的相关操作(获取屏幕的宽高等操作)
- GDCM:gdcm::Defs的测试程序
- maple里面怎么搜索_C#基础系列06 全栈第三步 说好的增加搜索
- 【Qt】数据库用户接口层
- 打印速度快点的打印机_SLM推出了功能强大的新型金属3D打印机,速度快20倍
- PAT1130. Infix Expression (25) 中序遍历
- springboot 设置ico_Spring Boot--Thymeleaf模板引擎/静态页面
- freetype在Linux平台编译小记
- 【codevs1220】数字三角形
- maven+springMvc+velocity
- android rtorrent 编译,rtorrent交叉编译
- 大学计算机第一学期期末考试试题,《大学计算机基础》期末考试试题(A卷)..doc...
- 数据结构与算法分析,哪本数据结构教材比较合适
- WIN10_修改用户名
- python交易是什么意思_Py交易是什么意思?Py交易是什么梗?
- 如何等比例调整图片大小?
- 湖南省第八届大学生计算机程序设计竞赛获奖名单
- Navicat Premium 12 免安装版
- 自适共振神经网络算法 ART 算法 代码实现