======字符串======
「已注销」
这个作者很懒,什么都没留下…
展开
-
Manacher算法
Manacher算法作用Manacher算法(又名“马拉车”算法)主要用于解决一类常用问题——最长回文子串(很多公司笔试都有这类题)。效率为O(n),线性的效率可以秒杀所有低能算法。实现首先关于回文串的长度有可能是奇数也有可能是偶数。通常情况下这个问题需要分类讨论,但是这真的很烦很烦。而Manacher算法对于这个细节问题采用了一种巧妙的方法:在每两个字符,以及字符的开始和结束部分都插入一个分隔字符原创 2017-05-02 21:37:41 · 713 阅读 · 5 评论 -
[KMP]BZOJ 4974 [Lydsy1708月赛]字符串大师 题解
题目大意给出一个长度为n的字符串,求这个字符串的所有前缀的最小循环节,现在反过来,给出所有前缀的最小循环节,求字典序最小的字符串。(N≤100000)(N\le100000)(N≤100000)解题分析最小循环节=i-nxt[i]那么可以求出nxt数组。求出来了又如何?如果Nxt[i]已知,注意nxt[i]的定义是s[1…nxt[i]]=s[i-nxt[i]+1…n],那么明显s[i]...原创 2018-10-18 19:05:45 · 244 阅读 · 0 评论 -
[Manacher+贪心]BZOJ 3790 神奇项链 题解
[Manacher+贪心]BZOJ 3790 神奇项链 题解本题有权限题目描述Description母亲节就要到了,小 H 准备送给她一个特殊的项链。这个项链可以看作一个用小写字母组成的字符串,每个小写字母表示一种颜色。为了制作这个项链,小 H 购买了两个机器。第一个机器可以生成所有形式的回文串,第二个机器可以把两个回文串连接起来,而且第二个机器还有一个特殊的性质:假如一个字符串的后缀和...原创 2018-10-08 20:59:05 · 457 阅读 · 0 评论 -
[AC自动机]BZOJ4327 JSOI2012 玄武密码 题解
题目大意给出nnn个文本串|s||s||s|和1个模板串|S||S||S|,问对于每个文本串能与模板串匹配的最长前缀长度。∑|s|≤107,|S|≤107,n≤105∑|s|≤107,|S|≤107,n≤105\sum|s|\le10^7,|S|\le10^7,n\le10^5解题报告对nnn个文本串建立AC自动机,然后将模板串放到AC自动机上匹配,对于匹配到的点就沿着它的fa...原创 2018-09-06 19:15:51 · 250 阅读 · 0 评论 -
AC自动机
简介AC自动机,全称Aho-Corasick自动机,适用于存在多个模板串的字符串匹配问题,如果没有AC自动机,你可能需要对n个模板串分别求一趟KMP,但是复杂度过高,而AC自动机可以一次匹配,效率更优秀。实现KMP是在字符串上线性匹配,而AC自动机则在字符串的集合上匹配,什么东西可以把一大堆字符串吧、放一起存储?Trie!所以AC自动机其实就是在Trie上生成KMP的失配函数。...原创 2018-08-30 15:07:35 · 1042 阅读 · 0 评论 -
[AC自动机+DP]BZOJ1030 (JSOI2007)文本生成器 题解
题目大意给出n个模板串,如果在一个文本中至少存在一个模板串,那么这个文本就是合法的,求长度为m的文本的合法方案数模10007后的结果。解题报告AC自动机+DP的经(mo)典(ban)题。用模板串建AC自动机,f[i][j]f[i][j]f[i][j]表示文本串长度为iii,在AC自动机上匹配到节点jjj的方案数,注意别走到单词节点,而且如果fail[x]fail[x]fail[x]...原创 2018-09-07 21:42:45 · 184 阅读 · 0 评论 -
[Trie+贪心]BZOJ 4567 [Scoi2016]背单词 题解
题目大意给出nnn个字符串,要求给这nnn个字符串编号1~n,使其代价和最小。 对第iii个字符串编号为viviv_i,代价的计算方式如下:1.如果存在字符串jjj满足jjj是iii的后缀,且vi<vjvi<vjv_iiii的代价为n2n2n^2 2.如果字符串iii没有对应的后缀,那么代价为viviv_i 3.如果存在字符串jjj满足jjj是iii的后缀,而且没有vi&...原创 2018-08-25 16:54:36 · 198 阅读 · 0 评论 -
[Manacher]BZOJ 2160 拉拉队排练 题解
题目大意给出一个长度为n的字符串,求它前k长的回文子串长度乘积。n≤106,k≤1012n≤106,k≤1012n \le10^6,k\le10^{12}解题报告某神犇曾经说过:“ 水水博客有利身体健康。” 所以这题就是Manacher裸题,因为如果[L,R]是回文子串,那么[L+1,R-1]也是回文子串。所以前缀和统计就行了。#include<cstdio>#...原创 2018-08-24 22:18:22 · 161 阅读 · 0 评论 -
[KMP]BZOJ 3620 似乎在梦中见过的样子 题解
题目大意给出一个字符串,求它有多少个子串满足可以拆成三个子串A+B+AA+B+AA+B+A,其中|A|≥k,|B|≥1|A|≥k,|B|≥1|A|\ge k,|B|\ge1解题报告O(n2)O(n2)O(n^2)过,真是……前缀和后缀相同,KMP……那么这道题枚举左端点L,对后缀进行失配处理,建一棵fail数(把每个点向它的失配点连边,可以构造出一棵树),那么如果子串[L,...原创 2018-08-24 16:15:19 · 495 阅读 · 0 评论 -
[KMP]UOJ#5. 【NOI2014】动物园 题解
题目大意多组数据,每次给出一个长度为nnn的字符串,求它的∏ni=1(num[i]+1)&nbsp;Mod&nbsp;1000000007∏i=1n(num[i]+1)&nbsp;Mod&nbsp;1000000007\prod_{i=1}^n(num[i]+1)\ Mod\ 1000000007num[i]num[i]num[i]的定义为:对于字符串长度为i的前缀子串中,前缀等于后缀且前...原创 2018-08-24 11:09:16 · 1007 阅读 · 0 评论 -
[Trie树]BZOJ 1590 [Usaco2008 Dec]Secret Message 秘密信息 题解
[Trie树]BZOJ 1590 [Usaco2008 Dec]Secret Message 秘密信息 题解题目大意给出nnn个01字符串a和mmm个字符串b,求对于每个字符串b,有多少个字符串aaa满足lcp(a,b)=min(a,b)lcp(a,b)=min(a,b)lcp(a,b)=min(a,b)(lcp为最长公共前缀,min取长度较短的那个字符串),n,m≤105n,m≤10...原创 2018-08-28 14:52:06 · 289 阅读 · 0 评论 -
【字符串+哈希】BZOJ 2795 [Poi2012]A Horrible Poem 题解
(传送门)题目大意见题面……解题分析贴结论:一个字符串的最小周期等于这个字符串的长度-border的长度 但这道题是多组询问,所以不能用KMP,此时又出现了这么一个定理:如果这个字符串的一个周期为x,则[L,R-x]=[L+x,R] ([]表示子串位置)而且很明显循环节的长度是字符串的一个因子。所以线性筛O(n−−√n\sqrt n)找出所有因子,然后哈希判断一...原创 2018-08-04 23:54:29 · 291 阅读 · 0 评论 -
BZOJ 2084: [Poi2010]Antisymmetry 题解
写完睡觉……此题有权限……题目大意给出一个0和1的串,要求求出所有特殊子串,一个特殊子串满足这个子串取反并回文后的串与原串相同。解题分析貌似就是Manacher,对字符相等进行一下变换,然后,就成了求回文子串个数,那么对于一个字符串中的字母,先用Manacher求出p数组,那么我们知道其最长回文子串的长度为p[i]-1,而且如果这么长的是回文的,那么两边同时缩短一点也是回文的,也就是说以i为中心的回原创 2017-07-30 23:25:23 · 255 阅读 · 0 评论 -
POJ 3764[The xor-longest Path]题解
(传送门)题目大意 给出一棵树,求出权值最大的的简单路径,定义一条简单路径的权值为这条简单路径上的边权的xor和。解题分析正在学习Trie树的神奇用处,Trie树又称字母树,用于存储字符串,代码简单,用起来也方便,Trie树也是学习AC自动机等其他字符串算法的基础,但是这里讲的,是Trie树与二进制xor运算的关系,多用于处理xor数最大最小问题。首先根据xor原理,相同为0,不同为1。那么对于两原创 2017-07-28 22:26:28 · 318 阅读 · 0 评论 -
[Manacher+离线+线段树]2015计蒜之道初赛第三场 商品推荐走马灯 题解
题目大意给出一个长度为nnn的序列,多次询问一个区间[L,R][L,R][L,R]内所有回文子串的权值和。解题分析涉及到回文字符串的题目立刻脑回路想到Manacher,那么这题可以考虑从回文中心入手,然后又发现这道题支持离线操作,所以可以离线询问,然后分析每一个回文中心的影响。那么对于一个询问,会存在回文中心是先碰到左端点还是先碰到右端点,所以可以分成两半分别处理,对于左半区间,肯定会先碰...原创 2018-10-29 16:25:27 · 207 阅读 · 0 评论