#include <bits/stdc++.h>
using namespace std;
const int N = 1000000 + 10;
int t, n, m;
int la, lb;
char a[N], b[N];
int nex[N];
void get_nex(){
int i = 0, j = -1;
nex[0] = -1;
while(i < lb){
if(j == -1 || b[i] == b[j]){
i++, j++;
nex[i] = j;
}
else j = nex[j];
}
}
int kmp(){
get_nex();
int i = 0, j = 0;
while(i < la){
if(j == -1 || a[i] == b[j]){
i++, j++;
}
else j = nex[j];
if(j == m) return i - m; ///继续匹配 j = 0;
}
return -1;
}
int main(){
scanf("%d", &t);
while(t--){
scanf("%s%s", a, b);
la = strlen(a);
lb = strlen(b);
printf("%d\n", kmp());
}
}
相关推荐
逻辑漏洞:水平越权、垂直越权靶场练习
水平越权和垂直越权是组织中常见的管理问题,指的是员工在组织中所拥有的权力和责任超出其职位所应具备的范围。 水平越权是指员工在同一级别的职位上超越了其同事的权力和责任范围,通常表现为某个员工在团队中承担了过多的任务或权力,导致其他同事感到不公平或不满。 垂直越权则是指员工在组织中超越了其职位等级的权力和责任范围,通常表现为员工在没有得到上级批准的情况下做出决策或行动,可能会导致组织内部的混乱和冲突。
KMP算法之 模板+个人总结+好题
最后一个月的倔强,希望可以。 文章目录1. KMP 1. KMP 首先是next数组。kmp的核心无非于next数组: next[0]=−1/0next[0]=-1 / 0next[0]=−1/0 next[i]表示模式串的前i个字符的最长公共前后缀的长度next[i]表示模式串的前i个字符的最长公共前后缀的长度next[i]表示模式串的前i个字符的最长公共前后缀的长度 出现失配的时候,因为前 ...
Unity 2D精灵点击交互实现:从BoxCollider 2D到Event Trigger的完整指南
本文提供了Unity 2D精灵点击交互的完整实现指南。通过详细拆解BoxCollider 2D与Event Trigger两大核心组件的协同工作原理,手把手教你为Sprite Renderer添加点击、悬停等事件响应。文章包含从基础配置到进阶优化、性能调试的实战步骤,帮助开发者高效实现游戏世界内的对象交互,是Unity 2D开发的实用教程。
【个人模板】 KMP
#include using namespace std; const int N = 1000000 + 10; int t, n, m; int la, lb; char a[N], b[N]; int nex[N]; void get_nex(){ int i = 0, j = -1; nex[0] = -1; w
Modscan32连接上了却没数据?一文拆解所有报错(从“Device NOT CONNECTED”到“Checksum Error”)
本文深入解析Modscan32连接异常问题,从状态栏报错到数据异常,提供系统化的诊断思路和解决方案。涵盖物理层问题、配置参数错位、端口占用冲突等常见故障,帮助工程师快速定位和解决Modbus通信中的各类错误。
Xilinx PCIe IP核示例工程仿真流程与关键任务解析
本文详细解析了Xilinx PCIe IP核示例工程的仿真流程与关键任务。通过搭建仿真环境、解读初始化日志,并深入剖析TSK_TX_MEMORY_WRITE_32等核心任务的TLP报文生成与交互过程,帮助开发者掌握PCIe IP核的仿真调试方法,为实际硬件设计提供可靠的验证基础。
nefu暑假集训5 KMP 个人模板+例题汇总
正文:前言:KMP算法用于匹配字符串,假设长字符串为s,需要匹配的字符串是p。KMP算法的基础思想是利用一个next[n]数组:next[i]对应的是:以下标i为结尾的连续子串,与以第一个字符开始的子串,相等的最大长度。该数组的作用是,当某一个下标的元素没有匹配成功时,可以通过该长度跳转到与 匹配成功的部分字符串的最后一个,开始下一次匹配。以下是我写的一些题目。
PID算法(位置式pid算法和增量式pid算法)
PID 算法是闭环控制系统中常用的算法,PID 分别是 Proportion(比例)、Integral(积分)、Differential(微分)的首字母缩写。它是一种结合比例、积分和微分三个环节于一体的闭环控。
关于kmp的一点个人理解 poj3461 Oulipo (kmp模板题)
这个题就是先给子串,然后给母串,问子串在母串中出现的次数。 Oulipo Time Limit: 1000 ms / Memory Limit: 32768 kb Description The French author Georges Perec (1936–1982) once wrote a book, La disparition, without the letter 'e'....
Linux内核4.14版本——drm框架分析(1)——drm简介
本文介绍了DRM架构的发展历史、驱动框架以及简单示例,旨在帮助读者了解DRM架构的形成、功能流程实现。
Python爬虫分析二手交易平台商品定价合理性:基于多维度数据挖掘与机器学习
本文针对二手交易平台商品定价合理性问题,设计并实现了一个基于Python的多技术融合爬虫系统,结合Scrapy框架、Selenium自动化测试工具、Anti-Scraping对抗技术以及机器学习算法,对国内主流二手交易平台(闲鱼、转转等)进行大规模数据采集与分析。系统实现了商品信息的多维度采集、价格合理性模型构建、可视化展示等功能,为二手商品买卖双方提供科学的定价参考。实验结果表明,该系统能够有效识别定价异常商品,准确率达到89.7%,具有较高的实用价值。关键词:Python爬虫;二手交易;定价分析;
poj 2406 poj 1961 个人对吉大KMP模板的理解 KMP 基础题--找周期串
好佩服写kmp代码的人... 看死了终于看得有点明白了...... 学kmp先看两个比较好的总结 一是大牛matrix67的 http://www.matrix67.com/blog/archives/115/ 另一个是 http://www.cppblog.com/oosky/archive/2006/07/06/9486.html 这两个讲解非常好 摘一句我认为最重要的话
Python计算时间差的方法
使用datetime模块是Python内置的方法,使用timedelta对象可以更精确地计算时间差,而使用dateutil库则提供了更为灵活和方便的操作方式。我们可以使用datetime模块中的datetime类来表示一个具体的日期和时间,并进行相应的运算。在Python中,我们经常需要计算日期和时间之间的差异,例如计算两个日期之间的天数、小时数、分钟数等。Python提供了多种方法来计算时间差,下面我们将介绍其中的几种常用方法,并附上相应的源代码。在上面的代码中,我们使用了dateutil库中的。
二分查找函数(lower_bound())+KMP模板+个人理解
【代码】二分查找函数(lower_bound())+KMP模板+个人理解。
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
kmp模板
关于KMP算法的思想,网上有很多,这个算法写起来简单,但理解起来还是有一定难度的,我的表达能力也说不清楚, 所有直接上我自己写的模板吧 #include #include using namespace std; void get_next(char* p, int* next) { int i, j; i = 0; j = -1; next[0] = -1; while
RU DOS版、EFI版32bit/64bit BIOS常用工具
DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。
KMP模式匹配
KMP 这个算法非常妙,妙极了; 具体内容可以看此处就不多赘述了 如果想自学的请点击下列链接本篇只是我自己写写记记的 看毛片算法 模板题 看毛片 代码 #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define int long long #define debug puts("FUCK") const int N=1000010; int f[N],n,m,nex
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
个人常用算法模板
#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll mod = 1e9 + 7; const ll maxn = 2e5 + 500; ///快速幂 ll quickpow(ll x, ll n) { ll ret = 1; while(n){ ...
[kmp+模板] kmp模板
文章目录0. 前言1. kmp 0. 前言 kmp 模式匹配算法很牛,一般结合 kmp 的题目都不怎么简单,或是困难题目可以采用 kmp 的思想很快搞定,之前博文有写过 kmp· 算法原理,和简单实现了下,但是由于当时认识浅薄,大家看看就好。在此总结一个简单的 kmp 算法模板。 当时的博文:[杂谈] 12. BF、KMP、RK Algorithm 字符串匹配算法 1. kmp 这里是拿数组模拟栈。 模板代码: #include <iostream> using namespace std;
KMP模板(C++)
这是一个KMPC++的模板。相信很对同学看了大佬超详细的讲解(本文有链接),但还是不太清楚next数组的意义,或者为什么next[0]=-1,而不是1。Kmp的时间复杂度为什么是线性的
KMP详细解释及KMP算法模板
KMP是什么,KMP解决什么类型的问题 KMP全称为Knuth Morris Pratt算法,是一种高效的字符串匹配算法,寻找一个字符串中是否包含另一个字符串,例如 char *s = "ababababcab"; char *p = "ababc"; s为模板串(主串),p为字串,在s中找到p的位置 ...
【模板】kmp以及扩展kmp
kmp算法: 最佳博客: http://www.cnblogs.com/dolphin0520/archive/2011/08/24/2151846.html ; 这里面kmp算法讲的比较详细,我主要在这写下自己的kmp模板以及需要注意的地方。 void getnext(int t) { int i=0,j=-1; while(i!=t) { if(j==-1||a
KMP模板和模板题目
package 算法模板; import java.util.*; public class KMP { public static void prefix_table(char pattern[],int prefix[],int n) {//找到表 prefix[0] = 0; int len = 0; int i = 1; while(i<n) { if(pattern[i] == pattern[len]) { len++; prefix[i]=len;
字符串处理、KMP模板:【模板】
KMP算法模板(next函数和kmp) 首先主要感谢一下:July算法从头到尾彻底理解KMP,讲得是究极详细,文底还有视频版讲解。还有河海大学ACM字符串专题讲解,两个小姐姐一真一假让我笑哭,文章中我主要用了这个视频里的模板,很好用,自己手模上三五遍也就懂得差不多了。 ...
【模板】KMP字符串匹配
KMP字符串匹配中next数组求法【模板】KMP字符串匹配 KMP字符串匹配中next数组求法 char* strstr(char*str,char*pattern);//字符串很小O(m.n) 子串里面一头一尾有可以匹配上的小串,指针不用每次都回溯到最最开头的位置。 匹配前,对模式串进行详细分析, 搞清楚next值的含义, p[0 ~ j]==p[ (i-j) ~i] ,即从p[0]开始长度为len=j+1,都有p[j]= p[i] 那么一旦p[i+1]与t[?]不相等了,t[?]下一个就要与p[j.
2470



被折叠的 条评论
为什么被折叠?



