![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串 - KMP | EXKMP | Manacher
TaoSama
The ACM road begins.
展开
-
POJ 3746 Teacher YYF (打表)
题意: 给定英语语法的句法,问所给句子是否符合这些句法给定英语语法的句法, 问所给句子是否符合这些句法 1.只有SI SIO两种句子结构1. 只有SI\ \ SIO两种句子结构 2.名词前面必须有冠词2. 名词前面必须有冠词 3.形容词修饰名词必须放在冠词和名词中间3. 形容词修饰名词必须放在冠词和名词中间 4.副词修饰动词放在前面4. 副词修饰动词放在前面 5.原创 2015-11-03 22:09:03 · 833 阅读 · 0 评论 -
HDU 2087 剪花布条 (kmp)
题意: 求母串中出现了几次模式串,不能重叠求母串中出现了几次模式串, 不能重叠 分析: kmp匹配到了之后从头开始就好了kmp匹配到了之后从头开始就好了 代码:// // Created by TaoSama on 2015-10-27 // Copyright (c) 2015 TaoSama. All rights reserved. // //#pragma comment(li原创 2015-10-29 21:31:54 · 369 阅读 · 0 评论 -
HDU 1711 Number Sequence (kmp)
题意: 求母数列中是否有模式数列出现,输出最小的位置,没有输出−1求母数列中是否有模式数列出现, 输出最小的位置, 没有输出-1 分析: kmp入门题,不过这里匹配的是数列而已kmp入门题, 不过这里匹配的是数列而已 代码:// // Created by TaoSama on 2015-10-27 // Copyright (c) 2015 TaoSama. All rights r原创 2015-10-29 21:24:12 · 331 阅读 · 0 评论 -
POJ 2406 Power Strings (kmp求周期)
题意: 求串的循环次数求串的循环次数 分析: 求出最小周期=n−nxt[n],判断下整除然后就好了求出最小周期=n-nxt[n], 判断下整除然后就好了 代码:// // Created by TaoSama on 2015-10-28 // Copyright (c) 2015 TaoSama. All rights reserved. // //#pragma comment(li原创 2015-10-29 21:55:31 · 288 阅读 · 0 评论 -
POJ 3080 Blue Jeans (暴力)
题意: 求所有串最长的公共子串,多解输出字典序最小的求所有串最长的公共子串, 多解输出字典序最小的 分析: 数据小直接按题意暴力,把找子串部分改成kmp也可以数据小直接按题意暴力, 把找子串部分改成kmp也可以 代码:// // Created by TaoSama on 2015-10-30 // Copyright (c) 2015 TaoSama. All rights reser原创 2015-10-30 15:28:18 · 291 阅读 · 0 评论 -
HDU 1686 Oulipo (kmp)
题意: 求模式串在母串中出现了几次,可以重叠求模式串在母串中出现了几次, 可以重叠 分析: kmp直接匹配就好了kmp直接匹配就好了 代码:// // Created by TaoSama on 2015-10-27 // Copyright (c) 2015 TaoSama. All rights reserved. // //#pragma comment(linker, "/STA原创 2015-10-29 21:28:28 · 291 阅读 · 0 评论 -
HDU 1358 Period (kmp求周期)
题意: 求出所有的前缀的周期循环次数大于1的,输出长度,循环次数求出所有的前缀的周期循环次数大于1的, 输出长度, 循环次数 分析: 还是周期=i−nxt[i],然后搞就好了还是周期=i-nxt[i], 然后搞就好了 代码:// // Created by TaoSama on 2015-10-28 // Copyright (c) 2015 TaoSama. All rights re原创 2015-10-29 21:45:28 · 336 阅读 · 0 评论 -
HUST 1010 The Minimum Length(kmp求周期)
题意: 有一个字符串A,假设A是“abcdefg”,由A可以重复组成无线长度的AAAAAAA,即“abcdefgabcdefgabcdefg.....”.有一个字符串A,假设A是“abcdefg”, 由A可以重复组成无线长度的AAAAAAA,即“abcdefgabcdefgabcdefg.....”. 从其中截取一段"abcd从其中截取一段"abcdefgabcdefgabcdefga原创 2015-10-29 21:53:27 · 317 阅读 · 0 评论 -
Codeforces Round #338 (Div. 2) C. Running Track(dp + kmp)
给定|L|≤2100的S、T串,求T串被S串子串、或者反S串子串的最小构成方案给定|L|\le 2100的S、T串, 求T串被S串子串、或者反S串子串的最小构成方案 分析: f[i]:=0∼i最少被切割成几份,last[i]:=记录上次转移的方案,长度,正反f[i]:=0\sim i最少被切割成几份, last[i]:=记录上次转移的方案, 长度, 正反 转移枚举上一次切割的位置,f[i]原创 2016-01-09 22:43:04 · 392 阅读 · 0 评论 -
HDU 4763 Theme Section (kmp | exkmp)
题意: 给定一个EAEBE的字符串,|L|<=106,求最长的E给定一个EAEBE的字符串, |L|<=10^6, 求最长的E 分析: nxt[n]是前缀和后缀的lcp,也就是第一个E和最后一个Enxt[n]是前缀和后缀的lcp, 也就是第一个E和最后一个E 但是中间不一定能找到,所以要扫一下这个nxt数组去kmp匹配但是中间不一定能找到, 所以要扫一下这个nxt数组去kmp匹配原创 2015-11-03 23:01:00 · 411 阅读 · 0 评论 -
HDU 2594 Simpsons’ Hidden Talents (kmp)
题意: 求A串的前缀和B串的后缀的lcp(最长公共前缀)求A串的前缀和B串的后缀的lcp(最长公共前缀) 分析: nxt数组的定义,然后把A串和B串拼起来,扫一遍nxt数组,找到第一个最大的nxt数组的定义, 然后把A串和B串拼起来, 扫一遍nxt数组, 找到第一个最大的 代码:// // Created by TaoSama on 2015-10-30 // Copyright (c原创 2015-10-30 15:30:33 · 289 阅读 · 0 评论 -
HDU 3336 Count the string (kmp+dp)
题意: 求串的所有前缀在串中出现次数的总和求串的所有前缀在串中出现次数的总和 分析: dp[i]:=前i个字符中出现以第i个字符结尾的前缀的次数dp[i]:= 前i个字符中出现以第i个字符结尾的前缀的次数 dp[i]=dp[nxt[i]]+1dp[i] = dp[nxt[i]]+1 即第i个字符结尾的前缀数等于以第next[i]个字符为结尾的前缀数加上它自己本身,这俩是同一个字符原创 2015-10-30 15:39:56 · 316 阅读 · 0 评论 -
POJ 2752 Seek the Name, Seek the Fame (kmp)
题意: 求串所有前缀和后缀的lcp求串所有前缀和后缀的lcp 分析: 就是nxt[i]的含义,别忘记算上n就好了就是nxt[i]的含义, 别忘记算上n就好了 代码:// // Created by TaoSama on 2015-10-28 // Copyright (c) 2015 TaoSama. All rights reserved. // //#pragma comment(原创 2015-10-29 21:57:56 · 253 阅读 · 0 评论 -
HDU 2328 Corporate Identity (暴力 | kmp)
题意: 求N<=2000个串(L<=200)的最长公共子串,多解输出字典序最小的求N<=2000个串(L<=200)的最长公共子串, 多解输出字典序最小的 分析: 直接O(2002∗2000∗匹配)暴力可以过,这题数据随机直接O(200^2*2000*匹配)暴力可以过, 这题数据随机 用第一个串的所有个后缀去kmp匹配其他串,求的最小的匹配长度,复杂度可以降低到O(200∗2000∗原创 2015-10-30 20:59:38 · 580 阅读 · 0 评论 -
HDU 3294 Girls' research (manacher)
题意: N<=2∗105的串,给一个映射关系,求之后串的最长回文子串,多解输出第一个N<=2*10^5的串, 给一个映射关系, 求之后串的最长回文子串, 多解输出第一个 分析: 转换后跑一下manacher,然后记录一下答案的位置转换后跑一下manacher, 然后记录一下答案的位置 代码:// // Created by TaoSama on 2015-11-03 // Copyrig原创 2015-11-03 22:24:01 · 271 阅读 · 0 评论 -
HDU 4513 吉哥系列故事 完美队形II (manacher)
题意: N<=105的串,求最长回文串,并且左边的部分是不降的N<=10^5的串, 求最长回文串, 并且左边的部分是不降的 分析: 计算p数组的时候判断一下就好了,−−注意′#′计算p数组的时候判断一下就好了, - - 注意'\#' 代码:// // Created by TaoSama on 2015-11-03 // Copyright (c) 2015 TaoSama. All r原创 2015-11-03 22:16:23 · 314 阅读 · 0 评论 -
HDU 3374 String Problem (最小表示法)
题意: 求字符串的最小表示法和最大表示法,和他们的出现次数求字符串的最小表示法和最大表示法, 和他们的出现次数 分析: 出现次数其实根据最小周期来搞就好了 代码:// // Created by TaoSama on 2015-10-30 // Copyright (c) 2015 TaoSama. All rights reserved. // //#pragma comment(li原创 2015-10-30 21:02:58 · 377 阅读 · 0 评论 -
HDU 3746 Cyclic Nacklace (kmp求周期)
题意: 求串添加几个字母,变成循环大于1次的串求串添加几个字母, 变成循环大于1次的串 分析: 求出周期=n−nxt[n],然后判断判断就可以搞了求出周期=n-nxt[n], 然后判断判断就可以搞了 代码:// // Created by TaoSama on 2015-10-28 // Copyright (c) 2015 TaoSama. All rights reserved. /原创 2015-10-29 21:35:51 · 288 阅读 · 0 评论 -
HDU 1238 Substrings (暴力)
题意: 求长度的最大的所有子串的公共子串,子串可以顺序或者逆序满足一个就算公共的求长度的最大的所有子串的公共子串, 子串可以顺序或者逆序满足一个就算公共的 分析: 数据小,直接string暴力,kmp匹配也可以数据小, 直接string暴力, kmp匹配也可以 代码:// // Created by TaoSama on 2015-10-30 // Copyright (c) 2015原创 2015-10-30 18:25:47 · 393 阅读 · 0 评论 -
HDU 4300 Clairewd’s message (kmp | exkmp)
题意: 给定明文→密文的转换表,给出密文明文的拼接字符串,明文缺失部分或者缺失全部,还原最短的密文明文拼接字符串给定明文 \to密文的转换表, 给出密文明文的拼接字符串, 明文缺失部分或者缺失全部, 还原最短的密文明文拼接字符串 分析: 明文缺失,明文肯定小于等于floor(总长度/2),太长了整个字符串就非法了明文缺失, 明文肯定小于等于floor(总长度/2), 太长了整个字符串就非法了原创 2015-10-30 18:00:40 · 324 阅读 · 0 评论 -
HDU 3613 Best Reward (manacher)
题意: N<=5∗105的字符串,拆成两个部分,是回文串的话,权是字母权和,否则为0,求怎么拆分使得总权和最大N<=5*10^5的字符串, 拆成两个部分, 是回文串的话, 权是字母权和, 否则为0, 求怎么拆分使得总权和最大 分析: manacher预处理出p数组,然后枚举′#′作为切割位置,注意不能切空的manacher预处理出p数组, 然后枚举'\#'作为切割位置, 注意不能切空的原创 2015-11-03 22:13:33 · 433 阅读 · 0 评论 -
HDU 2609 How many (最小表示法)
题意: n<=10000个字符串,|L|<=100,可以滚动,如果滚动后相同,算同一个,问有多少个不同的串n <= 10000个字符串, |L|<=100, 可以滚动, 如果滚动后相同, 算同一个, 问有多少个不同的串 分析: 最小表示法 表示一下每个字符串,然后丢到set里,输出个数就好了最小表示法\ 表示一下每个字符串, 然后丢到set里, 输出个数就好了 代码:// // Creat原创 2015-11-03 21:37:44 · 369 阅读 · 0 评论 -
HDU 4618 Palindrome Sub-Array(Manacher、二分)
题意: 给定N×M,N,M≤300的矩阵,求最大的回文正方形的边长给定N\times M, N, M\le 300的矩阵, 求最大的回文正方形的边长 分析: 现场过了120,我真是一口老血,明明挺难的一个题现场过了120, 我真是一口老血, 明明挺难的一个题 赛后尼玛一看,卧槽O(n5)的算法过了,n2枚举点,n枚举边长,n2判断回文赛后尼玛一看, 卧槽O(n^5)的算法过了, n^2原创 2016-03-01 02:32:50 · 500 阅读 · 0 评论