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

KMP 小记

怎么总是忘。

默认 \(s\) 为 0-indexed。

首先前缀函数:\(\pi[i]\) 怎么求。
由于 \(\pi[i + 1] - \pi[i] \le 1\),所以最好情况就是 \(s[i + 1] = s[\pi[i]]\),此时 \(\pi[i + 1] = \pi[i] + 1\),如果失配,我们需要找到一个最大的 \(j\) 满足 \(s[0 \sim j - 1] = s[i - j + 1]\),显然 \(j = \pi[i]\)。然后不停跳即可。

然后 KMP,每次失配后需要找一个新的前缀匹配当前后缀,显然跳前缀函数就行。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
// typedef __int128 i128;
typedef pair<int, int> pii;
const int N = 1e6 + 10, mod = 998244353;
template<typename T>
void dbg(const T &t) { cout << t << endl; }
template<typename Type, typename... Types>
void dbg(const Type& arg, const Types&... args) {cout << arg << ' ';dbg(args...);
}
namespace Loop1st {
int n, m, pi[N];
char s[N], t[N];
basic_string<int>ans;
void main() {cin >> s >> t; n = strlen(s); m = strlen(t);for (int i = 1; i < m; i++) {int j = pi[i - 1];while (j && t[i] != t[j]) j = pi[j - 1];if (t[i] == t[j]) j++;pi[i] = j;}int j = 0;for (int i = 0; i < n; i++) {while (j && s[i] != t[j]) j = pi[j - 1];if (s[i] == t[j]) j++;if (j == m) {ans += i - m + 1;j = pi[j - 1];}}for (int x : ans) cout << x + 1 << '\n';for (int i = 0; i < m; i++) cout << pi[i] << " \n"[i == m - 1];
}}
int main() {// freopen("data.in", "r", stdin);// freopen("data.out", "w", stdout);ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);int T = 1;// cin >> T;while (T--) Loop1st::main();return 0;
}
http://www.jsqmd.com/news/193233/

相关文章:

  • 如何将GLM-TTS嵌入Web应用?前端JavaScript调用方案设计
  • GLM-TTS能否识别讽刺语气?情感理解能力边界测试
  • 城市轨道交通新线开通初期客流数据分析方法与应用研究
  • 2025年专业红土网球场建设排行榜,新测评精选红土网球场建设公司推荐 - 工业推荐榜
  • 如何提高GLM-TTS音色相似度?这几点设置至关重要
  • 语音合成速度慢?这份GLM-TTS性能优化清单请收好
  • 2025年跨境发薪服务商排行榜,跨境发薪服务商哪个值得选? - 工业品网
  • 水文水利网关让泵站管理“无人值守”落地,实现降本增效
  • GLM-TTS适合教育领域吗?智能教学助手应用场景探索
  • 学术写作迎来AI时代,9款顶尖工具详细评测,迅速完成开题报告和论文初稿
  • 信息-视频会议:多平台互通性测试的实践指南
  • 使用DVWA搭建安全测试环境:验证GLM-TTS Web服务的防护能力
  • AI重塑学术写作方式,9款智能工具全面评测,高效生成开题报告与论文初稿
  • 2025年美国EB5投资移民公司推荐,专业企业与咨询机构全解析 - mypinpai
  • 科研级语音生成工具GLM-TTS正式开放下载(附镜像地址)
  • AI推动学术写作创新,9款实用工具专业评测,快速撰写开题报告及论文初稿
  • 雷达液位计测量精度如何?误差范围是多少?
  • 通过GitHub Actions实现GLM-TTS模型更新自动同步机制
  • 2026必备9个降AI率工具测评榜单
  • 反钓鱼系统有效性测试方法论——面向安全测试工程师的实战指南
  • 工业控制中PHP如何安全下发指令?99%工程师忽略的3个关键点
  • AI技术改变学术写作生态,9款高效工具对比评测,一键生成开题报告与论文初稿
  • 从入门到精通:构建可移植PHP容器的环境变量设计模式(稀缺干货)
  • 语音合成模型可以打包成安装包?一键部署工具开发中
  • 金融-租赁:资产管理系统折旧计算测试报告
  • 导师严选10个AI论文网站,继续教育学生轻松搞定论文格式规范!
  • AR虚拟试衣间功能测试框架
  • 探索热辐射:红外发射率的调控艺术与应用(隐身篇)
  • 2026继续教育必备8个降AI率工具测评榜单
  • 多旋翼无人机的软着陆,使用稳健的非线性控制和风力建模附Matlab代码