ACM_字符串
yiqzq
人生如此复杂,机会多得像稠密图,我们没理由认输。尽管我们走不了最短路,但图仍是连通图,TLE之前,没有一个节点叫失败。
展开
-
poj3461(KMP算法)||(字符串hash)
题意:给出两个字符串,然你判断第一个字符串在第二个字符串中出现的次数。 思路:一个裸的KMP算法。主要内容在下面代码中实现。 #include <iostream> #include <algorithm> #include <cstdio> #include <string&原创 2018-04-16 22:02:44 · 765 阅读 · 1 评论 -
BZOJ2882 && Gym - 101875B 最小表示法
板子: int solve(int *s, int n) { //最小表示法,返回那个位置, int i = 0, j = 1, k = 0; while (i < n && j < n && k < n) { int t = s[(i + k) % n] - s[(j + k) % n]; if (原创 2019-03-04 19:34:50 · 350 阅读 · 0 评论 -
后缀数组模板
int n, k; int Rank[maxn + 1]; //记录下长度为k的子串的相对大小 int tmp[maxn + 1]; int sa[maxn];//后缀数组 string S; //长度为k时,对sa进行比较 //如果Rank[i]!=Rank[j],那说明在前半段,s[i..]就比s[j..]大. //如果相等,就比较后半段. bool compare_sa(int i, int...原创 2019-07-11 19:37:32 · 137 阅读 · 0 评论 -
关于kmp和exkmp的一些理解
KMP: 失配数组的含义: fail[i] 表示ss 0~i-1这个前缀的最长相同前后缀 构造的时候利用已知利用已知匹配长度(也就是当前失配指针的位置),尝试匹配当前位置和失配指针的位置的字符。 利用失配数组找s中的ss: 与上面构造失配数组的不同就是此时构造过程的参照不是自身s了,而是ss,此时是在求s中当前位置为结尾的这一部分串 的后缀和ss的前缀的最长相同部分。 exKMP: next数组的...原创 2019-08-06 21:26:25 · 849 阅读 · 0 评论 -
AC自动机初步学习
学习博客:https://www.cnblogs.com/nullzx/p/7499397.html 概述 AC 自动机是 以 TRIE 的结构为基础,结合 KMP 的思想建立的。 简单来说,建立一个 AC 自动机有两个步骤: 基础的 TRIETRIETRIE 结构:将所有的模式串构成一棵TRIETRIETRIE树 。 KMPKMPKMP的思想:对TRIETRIETRIE树上所有的结点构造失配指针...原创 2019-08-10 11:00:28 · 131 阅读 · 0 评论