字符串
多行不译必自闭
人生如逆旅,我亦是行人
展开
-
扩展kmp -- Theme Section HDU - 4763
Theme Section HDU - 4763题意:T次询问,每次给你一个字符串s(|s| <= 1e6),找到一个最长的子串,出现在s的串首、串中、串尾位置,互不重叠。输出这个子串的长度。思路:先用扩展kmp处理出s每位s[i]开头的的子串与前缀的最大长度,保存在nxt数组中,从尾部开始遍历nxt数组,如果i + nxt[i] = |s|(s的长度),则说明检索出了串首、串尾的两个子串,那再检索串中的子串是否存在,并在检索的过程中保证串首、串中、串尾的子串互不重叠。code:#incl原创 2020-12-14 23:58:54 · 242 阅读 · 0 评论 -
manacher -- 吉哥系列故事——完美队形II HDU - 4513
吉哥系列故事——完美队形II HDU - 4513题意:给你一系列数,求出最长的回文数列,且回文数列是从对称点往两端不递增。输出数列的最大长度。思路:manacher算法求最长回文数列,但要特判从对称点往两端不递增。code:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn =原创 2020-12-14 20:30:12 · 243 阅读 · 0 评论 -
manacher板子题 -- Palindrome POJ - 3974
Palindrome POJ - 3974题意:多行输入,每次给你一个字符串s(|s| <= 1e6),要你求出s中最长回文串的长度。思路:manacher板子。code:#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn = 1e6 + 5;char s[maxn], t[maxn * 2];int lengh[ma原创 2020-12-14 19:41:15 · 199 阅读 · 0 评论 -
manacher || 扩展kmp -- Best Reward HDU - 3613
Best Reward HDU - 3613题意:T次询问,每次给你一个字符串,字符串仅由26个小写字母组成,每个小写字母都有一个属性值。要你计算字符串的最大贡献。把字符串分成前后两个子串,若子串回文串则该子串贡献为字母的属性和,否则贡献为0。扩展kmp思路:用扩展kmp求出每个回文前缀和回文后缀并标记。在遍历划分子串求最大值。扩展kmp思路代码#include<iostream>#include<cstdio>#include<cstring>#in原创 2020-12-11 16:43:48 · 144 阅读 · 0 评论 -
kmp -- Count the string HDU - 3336
Count the string HDU - 3336题意:T次询问,每次给你一个数 n 和字符串 s ,n为s的长度。问你s的所有前缀要和s串匹配时要比较多少次。思路:next求出的就是和前缀匹配的最大长度,若长度大于0代表和前缀匹配,那么个数增加1,然后缩小前缀再进行判断。如 ababa 当我们匹配到a的时候,得到的next[5] = 3, 这时候次数增加1, 再匹配一下next[3] = 1,值也大于0那么次数还要增加, 再匹配next[1] = 0, 等于0了代表没有前缀和它相等原创 2020-11-27 17:01:00 · 89 阅读 · 0 评论 -
kmp 最小循环节
Cyclic Nacklace HDU - 3746题意:T次询问,每次询问给你一个字符串s(|s| <= 1e5 ),问你在串尾最少加几个字符可以使s至少包含两个循环节。思路:next数组求循环节,s的最小循环节长度 m = strlen(s) - nxt[strlen(s)]。显然,s中没有出现最小循环节,那最小循环节就是s串本身(nxt[strlen(s)] = 0),若有则可以把后面完整或部分的循环节通过减nxt[strlen(s)]去掉,保留第一个。code:原创 2020-11-26 11:50:00 · 224 阅读 · 0 评论 -
后缀数组
罗穗骞《后缀数组——处理字符串的有力工具》 https://wenku.baidu.com/view/228caa45b307e87101f696a8.html原创 2020-01-27 22:21:54 · 81 阅读 · 0 评论 -
ac自动机详解
转自大佬的blog:https://www.cnblogs.com/cmmdc/p/7337611.html简介:首先简要介绍一下AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂AC自动机,先得有模式树(字典树)Tri...转载 2020-01-27 21:57:55 · 324 阅读 · 0 评论