当前位置: 首页 > news >正文

详细介绍:P3375 【模板】KMP

测试链接

题目描述

给出两个字符串 s 1 s_1 s1 s 2 s_2 s2,若 s 1 s_1 s1 的区间 [ l , r ] [l, r] [l,r] 子串与 s 2 s_2 s2 完全相同,则称 s 2 s_2 s2 s 1 s_1 s1 中出现了,其出现位置为 l l l
现在请你求出 s 2 s_2 s2 s 1 s_1 s1 中所有出现的位置。

定义一个字符串 s s s 的 border 为 s s s 的一个 s s s 本身的子串 t t t,满足 t t t 既是 s s s 的前缀,又是 s s s 的后缀。
对于 s 2 s_2 s2,你还需要求出对于其每个前缀 s ′ s' s 的最长 border t ′ t' t 的长度。

输入格式

第一行为一个字符串,即为 s 1 s_1 s1
第二行为一个字符串,即为 s 2 s_2 s2

输出格式

首先输出若干行,每行一个整数,按从小到大的顺序输出 s 2 s_2 s2 s 1 s_1 s1 中出现的位置。
最后一行输出 ∣ s 2 ∣ |s_2| s2 个整数,第 i i i 个整数表示 s 2 s_2 s2 的长度为 i i i 的前缀的最长 border 长度。

输入输出样例 #1

输入 #1

ABABABC
ABA

输出 #1

1
3
0 0 1

说明/提示

样例 1 解释

对于 s 2 s_2 s2 长度为 3 3 3 的前缀 ABA,字符串 A 既是其后缀也是其前缀,且是最长的,因此最长 border 长度为 1 1 1

数据规模与约定

本题采用多测试点捆绑测试,共有 4 个子任务

  • Subtask 0(30 points): ∣ s 1 ∣ ≤ 15 |s_1| \leq 15 s115 ∣ s 2 ∣ ≤ 5 |s_2| \leq 5 s25
  • Subtask 1(40 points): ∣ s 1 ∣ ≤ 1 0 4 |s_1| \leq 10^4 s1104 ∣ s 2 ∣ ≤ 1 0 2 |s_2| \leq 10^2 s2102
  • Subtask 2(30 points):无特殊约定。
  • Subtask 3(0 points):Hack。

对于全部的测试点,保证 1 ≤ ∣ s 1 ∣ , ∣ s 2 ∣ ≤ 1 0 6 1 \leq |s_1|,|s_2| \leq 10^6 1s1,s2106 s 1 , s 2 s_1, s_2 s1,s2 中均只含大写英文字母。

题解

#include 
using namespace std;
const int N=1e6+10;
typedef long long ll;
int n;
int kmp[N];
int la,lb,j;
char a[N];
char b[N];
void solve()
{cin>>a+1;cin>>b+1;j=0;int la = strlen(a+1);int lb = strlen(b+1);for(int i=2;i<=lb;i++){while(j&&b[j+1]!=b[i])j = kmp[j];if(b[j+1]==b[i])j++;kmp[i]=j;}j = 0;for(int i=1;i<=la;i++){while(j&&b[j+1]!=a[i])j=kmp[j];if(b[j+1]==a[i])j++;if(j==lb){cout<>t;while(t--){solve();}return 0;
}
http://www.jsqmd.com/news/36802/

相关文章:

  • 11月10号
  • 基于DP1323EL的电动车解锁方案:超高速读写,提升电动车一键解锁体验
  • 最强LLM生成代码也会出错?
  • 张量与向量
  • TCP的超时重传时间是如何计算的
  • 路径遍历漏洞实战指南:5种绕过技术与自动化测试
  • 实用指南:LLMs-from-scratch :KV 缓存
  • 前置和后置的区别
  • 2025年11月太阳能板/光伏板/电池板/单晶硅/多晶硅板前十厂家排名:深圳精益太阳能板领跑行业
  • TCP报文中的时间戳有什么作用
  • 响应式编程 - reactor 初识
  • ubuntu16.04安装CUDA驱动 - 小
  • 深入解析:统一高效图像生成与编辑!百度新加坡国立提出Query-Kontext,多项任务“反杀”专用模型
  • 2025年11月太阳能板生产厂家排名前十榜单:深圳精益太阳能板引领行业
  • reactor 初识
  • QOJ6608 Descent of Dragons
  • 2026年HR 数字化转型趋势:AI如何帮助HR从招聘到绩效全流程人效提升 48%?
  • Windows利用批处理脚本判断端口, 启动tomcat
  • 2025最新实测对比:5款热门工程项目管理系统 协同能力与实用体验深度测评
  • 2025年双轴拌馅机实力厂家权威推荐榜单:调味料拌馅机/酱菜搅拌机/翻斗式拌馅机源头厂家精选
  • 2025年终绩效,AI面谈系统让沟通效率翻倍,主管再也不用熬夜写总结
  • vue实现T型二维表格
  • antd table 列表树形结构展示
  • 2025年深圳救护车运转公司权威推荐榜单:正规救护车出租/急救车出租/出租救护车源头公司精选
  • 对隐式类型转换保持警觉
  • es中批量删除数据
  • docker安装mysql/Redis/nacos/minio/es/xxl-job
  • 低代码高价值场景:让设备管理真正成为企业数字化资产
  • re-BABYRE-攻防世界
  • 二维数组去重