POJ 3461Oulipo KMP模板
KMP之所以线性,因为匹配的时候i是不往回走的
我们只用调整j的位置
假设在s中找t
用二元组(i,j)表示s串的[i-j+1,i] 与t串的[1,j]匹配
假设s[i+1]和t[j]匹配上了,就j++
如果不匹配的话,我们就想办法调整j,
直到找到一个满足二元组条件的j并且t[j+1]=s[i]
快速调整j就是利用nxt数组的过程,
处理nxt的方法类似与两个串之间的匹配
1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define N 1000010 5 using namespace std; 6 char s[N],t[N]; 7 int T,nxt[N],n,m,ans; 8 int main() 9 { 10 scanf("%d",&T); 11 getchar(); 12 while (T--) 13 { 14 ans=0; 15 memset(nxt,0,sizeof(nxt)); 16 scanf("%s%s",s+1,t+1); 17 n=strlen(s+1),m=strlen(t+1); 18 for (int i=2,j=0;i<=n;i++) 19 { 20 while (j>0 && s[j+1]!=s[i]) j=nxt[j]; 21 if (s[j+1]==s[i]) j++; 22 nxt[i]=j; 23 } 24 for (int i=1,j=0;i<=m;i++) 25 { 26 while (j>0 && s[j+1]!=t[i]) j=nxt[j]; 27 if (s[j+1]==t[i]) j++; 28 if (j==n) ans++,j=nxt[j]; 29 } 30 printf("%d\n",ans); 31 } 32 return 0; 33 }
转载于:https://www.cnblogs.com/mrsheep/p/7856161.html
POJ 3461Oulipo KMP模板相关推荐
- POJ Oulipo(KMP模板题)
题意:找出模板在文本串中出现的次数 思路:KMP模板题 #include<cstdio> #include<cstring> #include<cmath> #in ...
- POJ:3461-Oulipo(KMP模板题)
原题传送:http://poj.org/problem?id=3461 Oulipo Time Limit: 1000MS Memory Limit: 65536K Description The F ...
- POJ - Oulipo(KMP)
题目链接:http://poj.org/problem?id=3461 Time Limit: 1000MS Memory Limit: 65536K Description The French a ...
- kuangbin专题16B(kmp模板)
题目链接: https://vjudge.net/contest/70325#problem/B 题意: 输出模式串在主串中出现的次数 思路: kmp模板 在 kmp 函数中匹配成功计数加一, 再令 ...
- HDU 1711 Number Sequence(KMP模板)
http://acm.hdu.edu.cn/showproblem.php?pid=1711 这道题就是一个KMP模板. 1 #include<iostream> 2 #include&l ...
- 扩展KMP模板(学习)
学习链接:https://www.luogu.org/problemnew/solution/P5410 一.引言 一个算是冷门的算法(在竞赛上),不过其算法思想值得深究. 二.前置知识 kmp的算法 ...
- Oulipo(欧力波)(经典kmp模板题) HDU-1686
题目:Oulipo(欧力波) 中文大意 The French author Georges Perec (1936�C1982) once wrote a book, La disparition, ...
- Codeforce-126B:Password(KMP模板题)
题目链接:点击打开链接 题目大意: 给你一个串,让你求这个串的一个同时是前缀,后缀(这个说法好像不太对)且在串中出现过的最长子串. 举个例子: 对于串 fixprefixsdfix 就应该输出fix. ...
- 【KMP模板】简单写个KMP~
本来easy的KMP 却一直过不了洛谷的模板题... 仔细一看原来在输出next数组时打的回车而不是空格... 身败名裂... 话说有个sunday貌似一般状况下比KMP快呢...去看看2333 #i ...
最新文章
- C语言编程的Debug版和Release版
- Windows Phone开发(25):启动器与选择器之WebBrowserTask
- Vue基础之事件处理器
- YAML_02 playbook的ping脚本检测
- 1.2 Linux的网络配置和连接工具
- [转]《帮我买个单》
- python网络蜘蛛
- C语言——通讯录的实现
- PHP语言面对对象编程之继承
- 基因测序技术发展历史以及一、二、三代测序技术原理及应用
- 陈伟华,羽毛球视频教学
- macOS SwiftUI 教程之 06 绘图实现正弦波,通过调整频率和步进值来更新正弦波视图 (教程含源码)
- 【人工智能】人工智能的概况(绪论)
- 软件测试职业规划(转)
- 目标检测——梯度均衡机制GHM(Gradient Harmonized Mechanism)的理解
- B1192 [HNOI2006]超级英雄Hero 二分图匹配
- Lintcode 4 Ugly Number II
- volatile,CAS,ABA三个关键字
- java-php-net-python-拼餐网站计算机毕业设计程序
- “中国建筑业竞争力百强”中化二建如何做知识管理?