题目名称 | 3513. kmp模板 |
---|---|
输入输出 | kmp.in/out |
难度等级 | ★☆ |
时间限制 | 1000 ms (1 s) |
内存限制 | 256 MiB |
测试数据 | 10 |
题目来源 | tat 于2020-12-30加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:27, 提交:46, 通过率:58.7% | ||||
tat | 100 | 0.000 s | 0.00 MiB | C++ |
tat | 100 | 0.000 s | 0.00 MiB | C++ |
Theresis | 100 | 0.000 s | 0.00 MiB | C++ |
增强型图元文件 | 100 | 0.000 s | 0.00 MiB | C++ |
yrtiop | 100 | 0.000 s | 0.00 MiB | C++ |
yrtiop | 100 | 0.000 s | 0.00 MiB | C++ |
yrtiop | 100 | 0.000 s | 0.00 MiB | C++ |
yrtiop | 100 | 0.000 s | 0.00 MiB | C++ |
yrtiop | 100 | 0.000 s | 0.00 MiB | C++ |
cb | 100 | 0.000 s | 0.00 MiB | C++ |
关于 kmp模板 的近10条评论(全部评论) | ||||
---|---|---|---|---|
军训回来第一模板题
| ||||
数据好弱,BF居然过了。。。
upd:现在换了C++14,next 还不能定义成数组名了,只能用 nxt 或 Next 替代了QAQ
yrtiop
2021-11-16 21:00
2楼
| ||||
|
给出两个字符串 $s_1$ 和 $s_2$,若 $s_1$ 的区间 $[l,r]$ 子串与 $s_2$ 完全相同,则称 $s_2$ 在 $s_1$ 中出现了,其出现位置为 $l$。
现在请你求出 $s_2$ 在 $s_1$ 中所有出现的位置。
定义一个字符串 $s$ 的 $border$ 为 $s$ 的一个非 $s$ 本身的子串 $t$,满足 $t$ 既是 $s$ 的前缀,又是 $s$ 的后缀。
对于 $s_2$,你还需要求出对于其每个前缀 $s$′ 的最长 $border$ $t$′ 的长度。
第一行是$s_1$,第二行是$s_2$;
首先输出若干行,每行一个整数,按从小到大的顺序输出 $s_2$ 在 $s_1$ 中出现的位置。
最后一行输出 ∣$s_2$∣ 个整数,第 $i$ 个整数表示 $s_2$ 的长度为 $i$ 的前缀的最长 $border$ 长度。
ABABABC ABA
1 3 0 0 1
对于全部的测试点,保证$s_1.len$,$s_2.len<10^6+20$,$s_1$,$s_2$ 中均只含大写英文字母。
$lg$