![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串
forever_shi
但行好事,莫问前程;行你所行,无问西东!
展开
-
洛谷3966 BZOJ3172 单词 AC自动机
题目链接 题意: 给你n个字符串,求每个字符串在所有字符串中出现了几次。题解: 需要字符串匹配,还是多串匹配,不难想到要AC自动机。但是不能直接用AC自动机匹配,因为可能是另一个串的子串。我们考虑建AC自动机的过程,我们在一个一个插入字符串的过程中,一旦经过了trie树上的某个节点,就意味着根到该节点的字符串又出现了一次,所以建trie树时一路上给每个经过节点的经过次数都加一,并且记录每...原创 2018-08-03 21:34:51 · 128 阅读 · 0 评论 -
洛谷4770 BZOJ5417 NOI2018 你的名字 SAM 线段树合并
题目链接题意:给你一个字符串,有若干次询问,每次询问给你一个串和一对(l,r)(l,r)(l,r),问你询问串有多少个本质不同的子串没有在原串[l,r][l,r][l,r]区间内出现过。总询问串长&lt;=1e6&lt;=1e6<=1e6,单个串和原串长&lt;=5e5&lt;=5e5<=5e5题解:好像我NOI网上同步赛这个题爆零了,现在再来做...原创 2019-02-27 11:30:01 · 226 阅读 · 0 评论 -
洛谷5212 BZOJ2555 SubString SAM LCT
题目链接题意:给出一个字符串,有两种操作,第一个是在当前字符串后面加上一个字符串,另一个是询问一个字符串在当前字符串中出现了多少次。总长度差不多是1e61e61e6级别的。题意:如果只有询问,求一个串在原串出现的次数的话,我们就只需要在SAM上走到询问串末尾在SAM上对应的点,然后查询parent树上子树内的结束点的个数就可以了。假如这个时候SAM上的每一个点在parent树上的子树结束点...原创 2019-02-26 19:21:37 · 124 阅读 · 0 评论 -
洛谷4287 BZOJ2342 SHOI2011 双倍回文 manacher set
题目链接题意:给你一个长度为nnn的字符串,问你长度最长的子串,要求它形如AARAARAA^RAA^RAARAAR,其中ARA^RAR表示把AAA这个串反过来之后的串,并且AAA与ARA^RAR不能有公用的字符,换句话说,就是最后的答案串AARAARAA^RAA^RAARAAR的长度一定是4的倍数。n&lt;=5e5n&lt;=5e5n<=5e5。题解:一看就是与回文...原创 2019-02-21 10:22:36 · 143 阅读 · 0 评论 -
BZOJ3881 [Coci2015]Divljak AC自动机 树状数组 倍增LCA
题目链接由于是BZOJ的权限题,于是放的是darkbzoj的链接。题意:你有一个由nnn个字符串组成的集合SSS,然后有qqq次操作。每次操作会在另一个集合TTT中加入一个字符串,或者询问某一个在SSS中的串在TTT集合的所有串中的多少个中出现过。n,q&lt;=1e5n,q&lt;=1e5n,q<=1e5,总串长&lt;=2e6&lt;=2e6<...原创 2019-02-20 21:29:02 · 166 阅读 · 0 评论 -
洛谷4384 BZOJ5253 2018八省联考 制胡窜 SAM 倍增 线段树合并
题目链接题意:给你一个长度为nnn的字符串,有mmm次询问,每次询问给出一对(l,r)(l,r)(l,r),问你有多少种把序列划分成三段的方法,使得S1...i,Si+1...j−1,Sj...nS_{1...i},S_{i+1...j-1},S_{j...n}S1...i,Si+1...j−1,Sj...n三段中至少有一点包含子串Sl...rS_{l...r}Sl...r,对于每一次...原创 2019-02-26 09:41:58 · 237 阅读 · 0 评论 -
洛谷4696 BZOJ2384 CEOI2011 matching KMP 树状数组 离散化
题目链接题意:给你一个长度为nnn的排列ppp,再给你一个长度为mmm的排列hhh。对于一个序列和一个排列,我们定义这个序列能匹配这个排列的条件是,长度相同,并且序列里的元素互不相同,并且将这个排列排序后大小关系与排列的值相同。也就是说,如果排列是p1,p2...pnp_1,p_2...p_np1,p2...pn,那么对hhh排序后应为hp1,hp2...hpnh_{p_1},h_{p_...原创 2019-02-20 15:00:53 · 255 阅读 · 0 评论 -
BZOJ2905 背单词 AC自动机 线段树
题目链接由于是权限题,我没有权限号,就挂了一个darkbzoj的链接。题意:给你nnn个字符串,每个串有一个价值,你要从中选出一个价值和最大的子序列,使得前面的串是后面串的子串。数据组数&lt;=10,总串长&lt;=3e5,单个串长&lt;=2e4数据组数&lt;=10,总串长&lt;=3e5,单个串长&lt;=2e4数据组数<=10,...原创 2019-02-19 16:53:25 · 311 阅读 · 0 评论 -
洛谷4081 BZOJ5137 USACO2017DEC Standing Out from the Herd SAM
题目链接题意:给你nnn个字符串,要求你对于每个串求只在这个串出现过的本质不同的子串的个数。n&lt;=1e5,总串长&lt;=1e5n&lt;=1e5,总串长&lt;=1e5n<=1e5,总串长<=1e5。题解:这种本质不同的子串的问题基本上都是考虑用SA或者SAM来做的吧。这里我们考虑用SAM来做这个题。我们考虑原来对于一个串的时候怎么用S...原创 2019-02-25 11:08:33 · 140 阅读 · 0 评论 -
洛谷1117 BZOJ4650 NOI2016 优秀的拆分 SA 调和级数 差分
题目链接题意:给你一个字符串,问你有多少个子串,形式是AABBAABBAABB,其中AAA和BBB可以相同。串长&lt;=30000&lt;=30000<=30000,数据组数&lt;=10&lt;=10<=10。题解:一个早就听说有95分暴力的题。然后现在发现正解其实并不是特别好想吧。我又靠题解度日了。首先我们可以想到,我们并不需要check...原创 2019-02-24 20:58:50 · 180 阅读 · 0 评论 -
洛谷2414 BZOJ2434 NOI2011 阿狸的打字机 AC自动机 树状数组
题目链接题意:给你一个读入串,其中包含多个字符串。字符集是小写字母,如果读到B,表示当前串删除上一个字母,如果读到P,表示当前串形成了一个新串,但是原来的的字符串并不消失,会继续成为下一个串的前缀。我们给每个串按产生的顺序标上序号,每次会给出两个询问串的标号,问第x个串在第y个串中出现了多少次。总串长<=1e5,询问次数<=1e5。题解:是一个我觉得写起来有点麻烦的题。首先问...原创 2019-02-13 19:26:29 · 173 阅读 · 0 评论 -
洛谷2336 BZOJ2754 SCOI2012 喵星球上的点名 SA 莫队 二分
题目链接题意:有nnn个人,每个人有两个串,一个表示姓,一个表示名,这里用数字表示字符。有mmm次询问,对于每次询问,你要回答有多少个人的姓或者名至少有一个是给出的串的子串。最后再对于这nnn个人中的每一个人,回答这个mmm个串中的多少个串是这个人的姓或者名至少一个的子串。n&lt;=5e4,m&lt;=1e5,总长度&lt;=1e5,数值&lt;=1e4n&a...原创 2019-02-22 16:53:21 · 172 阅读 · 0 评论 -
洛谷 1666 前缀单词 trie树 dp
题目链接 题意: 给你n个字符串,每次选出若干个字符串形成一个集合,问有多少个集合满足集合中的任何一个字符串都不是另外一个字符串的前缀。空集也一定是满足条件的。保证不会出现两个相同的字符串。题解: 也是NOIP模拟赛出现的题。当时想到了建trie树之后dp(我也忘了是怎么想到的了),但是当时我感觉算互相不为前缀可能不太好算,于是就在考虑用集合总数减去存在互为前缀的集合,结果发现自己dp计...原创 2018-09-15 13:34:34 · 235 阅读 · 0 评论 -
洛谷3538 BZOJ2795 A Horrible Poem 哈希 线性筛素数
题目链接题意:给出一个由小写英文字母组成的字符串S,再给出q个询问,要求回答S某个子串的最短循环节。题解: 我感觉网上有些题解在乱说,并不是n是循环节,n*k也一定是循环节的,要满足n*k|len才行的。 而且感觉好多做法代码对但是解释是不对的。 我们发现,对于一个区间,可能的循环节长度一定是原区间长度的约数,但是直接枚举约数复杂度是根号级别的,复杂度还是高了。我们考虑优化,我们发现...原创 2018-09-03 19:18:05 · 190 阅读 · 0 评论 -
BZOJ3916 friends 哈希
题目链接题意: 游戏规则是有一个字符串,把它复制之后放到原字符串的后面,之后在这个字符串随机插入一个字母,得到一个新的字符串。现在给你一个字符串,问你可不可能是经过游戏的操作得到的。题解: 就是哈希前缀和来判断字符串是否相同。思维不难,但是想提醒自己注意一下这种哈希前缀和的写法,注意哈希前缀和相减时的下标和乘的基数的指数。代码://正经的哈希不知道怎么挂了,自然溢出这种东西...原创 2018-09-02 21:44:35 · 371 阅读 · 1 评论 -
洛谷3498 BZOJ2081 Beads 哈希
题目链接 题意: 给你一个序列,对于i∈[1,n]i∈[1,n]i\in[1,n]判断每i个组成若干个序列最多有多少个不同的序列,并且我们认为正序和倒序是相同的,例如认为(1,2)和(2,1)相同的,还有输出有多少个最长的序列和这些最长序列都是由哪些i得来的。题解: 用哈希前缀和来判断相同不难想到,但是发现这个认为正序和倒序是相同不太好办,一个想法是对哈希的正序和倒序前缀和再哈希,但是每...原创 2018-09-04 15:16:38 · 159 阅读 · 0 评论 -
洛谷2375 BZOJ3670 NOI2014动物园 KMP
题目链接 题意: 给你一个长度为n的字符串,求对于每一个1到n之间的i,求字符串1到i的不重叠且相同的前缀与后缀的个数num[i]num[i]num[i],输出∏ni=1(num[i]+1)&amp;nbsp;∏i=1n(num[i]+1)&amp;nbsp;\prod_{i=1}^n(num[i]+1)\ %1000000007的结果。题解: 根据题目的提示,很容易往KMP方向想。我们发现,只有nex...原创 2018-07-31 23:02:41 · 237 阅读 · 0 评论 -
洛谷2444 BZOJ2938 病毒 AC自动机
题目链接 题意:给你n个01串,这些01串不能在你的串中出现,问你是否能构造出无限长的01串。题解: 乍一看是挺不好想的。无限长会想到得到一个可行的循环节,那些串不能出现却不太好处理。我是听别人讲的这道题,所以我也没有想好该怎么说明才能想到AC自动机的,如果有能给出一个合理的思维过程的朋友欢迎与我交流。 我们考虑AC自动机的原因是它可以用fail指针跳转,如果在跳的过程中形成了环,那么就...原创 2018-08-03 23:56:10 · 139 阅读 · 0 评论 -
洛谷5284 十二省联考 字符串问题 SAM 倍增 拓扑排序 排序
题目链接题意:给你一个长度为nnn的串,我们会从中选出nanana个子串作为AAA集合的串,选出nbnbnb个子串作为BBB集合的串。然后会有mmm组支配关系,每组支配关系给你一个在AAA集合中的子串的编号,一个在BBB集合中的子串编号,表示如果BBB对应的这个编号的子串是某一个AAA中的串的前缀的话,那个AAA中的串就可以接在当前AAA中的串的后面。问最长能接出多长的串,如果能无限长输出−1...原创 2019-04-10 18:23:29 · 317 阅读 · 0 评论