随笔分类 - ---字符串处理---
摘要:题目链接:hdu 4511 小明系列故事——女友的考验 题意: 中文不解释。 题解: 考虑将那些限制的条件插进AC自动机里面,然后在AC自动机上dp一下最短路就行了。 考虑dp[i][j]表示当前在第i个点上,在AC自动机的第j个点上的最短路。 然后dp转移看代码。 1 #include<bits/
阅读全文
摘要:题目链接:hdu 5129 Yong Zheng's Death 题意: 给你n个串,每个串串长30,现在让你构造串,使得该串能分成uv,u和v都是给出串中的前缀。 问能构造出多少这样的串。 题解: 这题主要是在如何去重。 如果不考虑重复,显然就是不同前缀串的数量的平方。 但是这里有算重,这里要求,
阅读全文
摘要:题目链接:hdu 5972 Regular Number 题意: 给你一个字符串,现在让你输出该字符串所有的合法子串。 合法子串定义为:对应位置的字符合法。 对应位置的合法字符会给你。 题解: 据说这是一个名字叫做Shift-And算法。其实就是一个bitset优化的字符串匹配。 这里我将它写成板子
阅读全文
摘要:题目链接:Russian Code Cup 2017 - Finals B. Similar Words 题意: 给你n个字符串,现在让你构造一个集合X。 1.使得X的每个元素都是这n个字符串中的前缀。 2.X中任意两个元素都不相似(即一个字符串去掉第一个字符后不是另一个字符串) 题解: 我们将所有
阅读全文
摘要:题目链接:2016-2017 ACM-ICPC Southeastern European Regional Programming Contest (SEERC 2016) C Castle 题意: 初始长为 N 的串 S,以及一个空集合 T。下列有 E 个操作: 1 c :在 S 串尾添加字符
阅读全文
摘要:题目链接:hdu 5853 Jong Hyok and String 题意: 给你n个字符串,m个询问,每次询问一个字符串 定义set(s)={(i,j)} 表示 s在第i个字符串中出现,且末尾位置为j。 对于一个询问,求set(Qi)=set(t) ,t串的数量。 题解: 如果是n=1,那么就是后
阅读全文
摘要:题目链接:hdu 4436 str2int 题意: 给你n个字符串,每个字符串都是由数字构成,现在让你将这n个字符串所有的不重复子串构成的十进制数字加起来mod2012. 题解: 似乎这种不重复的子串问题,用后缀自动机都比较无脑搞。 首先将所有的串连起来,中间插个特殊字符,然后建立后缀自动机。 然后
阅读全文
摘要:题目链接:hdu 5343 MZL's Circle Zhou 题意: 给你两个串A,B,问从A,B中选子串x,y,问x+y可以组成多少个不同的串,x和y可以为空。 题解: 贴一个官方的题解 1 #include<bits/stdc++.h> 2 #define mst(a,b) memset(a,
阅读全文
摘要:题目链接:Codeforces Round #244 (Div. 2) D. Match & Catch 题意: 给你两个串A,B,问你是否存在一个串x,使得x是A,B的子串,并且只在A,B中出现一次。 题解: 对于两个串分别建立后缀自动机,更新一下right集,然后dfs一下,更新一下答案就行了。
阅读全文
摘要:题目链接:hdu 4641 K-string 题意: 一开始给你一个字符串S,现在有m个操作。 1 x表示在当前字符串末端添加一个字符x。 2 表示查询当前出现次数超过k次的子串有多少个。 题解: 后缀自动机在线维护right集。 没插入一个字符,就沿着fail跳,如果当前节点大于等于k的就不用再跳
阅读全文
摘要:题目链接:hdu 4416 Good Article Good sentence 题意: 给你一个串A和n个串B,问你A有多少个子串不是这n个B的子串。 题解: 将A串建立后缀自动机,对于每个B串都拿去匹配一下,并记录后缀自动机中每个节点的最大匹配长度。 然后拓扑排序,更新每个节点的fail节点。最
阅读全文
摘要:题目链接:bzoj 3998: [TJOI2015]弦论 题意: 对于一个给定长度为N的字符串,求它的第K小子串是什么。 题解: 后缀自动机O(n)*26解决。 对于op=0,num[i]=1,对于op=1,num[i]=cnt[i]。 因为cnt[i](即right集)表示以i节点结尾的后缀出现的
阅读全文
摘要:题目链接:hdu 5008 Boring String Problem 题意: 给你一个字符串,有q个询问,每次询问该字符串所有的子串中字典序第k小的是哪个串,输出位置,如果有多个位置,输出最靠左的那个。 题解: 后缀数组求完height后,求一下字典序第i的后缀有多少个不同的子串,然后求一下前缀和
阅读全文
摘要:题目链接:hdu 4622 Reincarnation 题意: 给你一个串,然后有q个询问,每次询问区间有多少个不同的子串。 题解: 后缀自动机n^2预处理,O(1)回答。 对于每插入一个字符,该字符串新增加的不同的子串的个数为ml[p]-ml[pre[p]]。ml为最大步长 1 #include<
阅读全文
摘要:题目链接:hdu 6194 string string string 题意: 给你一个字符串,给你一个k,问你有多少个子串恰好在原串中出现k次。 题解: 后缀数组求出sa后,用height数组的信息去找答案。 每次用k长度的区间去卡height数组,求出该区间的lcp。 该区间的贡献就是ans=lc
阅读全文
摘要:题目链接:hdu 6153 A Secret 题意: 给你两个字符串a,b,问你对于b的每个后缀在a中出现了多少次,然后输出sum{每个后缀的长度*该后缀在a中出现的次数}。 题解: 将a,b反转一下,然后跑一下kmp,在途中记录一下哪些位置匹配到了。 然后再倒着统计一下答案就行了。 1 #incl
阅读全文
摘要:题目链接:hdu 6096 String 题意: 给你n个字符串,和q个询问,每个询问给出一个前缀和后缀,问你在这n个字符串中有多少个包含给出的询问,前缀和后缀不能重叠。 题解: 比赛的时候用的hash,无限wa,然后下来后发现他有一组特别的数据专卡我的hash,随便怎么换种子都能卡。真是R了狗了。
阅读全文
摘要:题目链接:hdu 6086 Rikka with String 题意: 给你n个只含01的串,和一个长度L,现在让你构造出满足s[i]≠s[|s|−i+1] for all i∈[1,|s|] ,长度为2L,并且包含给出的n个串,问能有多少种这样的串。 题解: 建立两个AC自动机,一个用来放正串,一
阅读全文
摘要:题目链接:hdu 6068 Classic Quotation 题意: 给你两个字符串S和T,现在有q个询问,每个询问给出一个l,r,问S[1..i] 和 S[j..n](1≤i≤L,R≤j≤n)中有多少个T,求出全部的总和。 题解: Claris的官方题解: 这里我用hash代替了kmp的作用。
阅读全文
摘要:题目链接:Codeforces Round #427 (Div. 2) D. Palindromic characteristics 题意: 给你一个串,定义k-th回文串,让你求每个k-th的数量。 题解: manacher处理好后做一下dp就行了。 当然也可以直接dp不用manacher. 1
阅读全文

浙公网安备 33010602011771号