
字符串
HOWARLI
自己选择的路,就算跪着也要走完!
展开
-
【NOIP2015模拟11.2】复制&粘贴2
Description文本编辑器的一个最重要的机能就是复制&粘贴。JOI社现在正在开发一款能够非常高速地进行复制&粘贴的文本编辑器,作为JOI社一名优秀的程序猿,你担负起了复制&粘贴功能的测试这一核心工作。整个JOI社的命运都系在你的身上,因此你无论如何都想写出一个正确且高速的程序来完成这项工作。 具体的做法如下所示。文件的内容是一个字符串S,对其进行N(N<=2*10^5)次复制&粘贴的操作,第原创 2016-04-11 20:36:50 · 762 阅读 · 0 评论 -
【AtCoder】【ARC077F】SS
Description给出对于字符串的函数F(x),表示在字符串后面加至少一个字符,使得新串由两个一样的字符串组成,如:f(aaabbb)=aaabbbaaabbb求对原串进行了无限次f()后的串,从第l位到第r位,每个字母出现了对少次 保证原串是由两个相同的串组成。Solution设原串为SS,由两个字符串S组成, 考虑第一次变化: 肯定是找出最短的T,使得T是S最短的...原创 2018-02-28 20:35:34 · 414 阅读 · 0 评论 -
【JZOJ 5272】神奇的重复序列
DescriptionSolution枚举两字符串的开头,暴力往后扫大家应该会做吧, 设两字符串开头为x,y(x<y)x,y(x<y),设k=y−xk=y-x 我们发现,如果对于多个位置,如果它在所在串的相对位置%k是相同的,那么这几个位都必须相同, 比如:两串的开头为1、3,k=2,那么,1、3、5、7等都必须相等, 换句话说,就是在两串相交时,会有一定的周期性, (大家写两个数据看看就原创 2017-08-15 21:41:22 · 441 阅读 · 0 评论 -
【JZOJ 5220】【GDOI2018模拟7.10】C
Description设A、B两字符串的最长公共公共前缀长度为L,那么在A串所有长度为L的子串中,有多少个同时是B的子串。Solution把题目改成:“A、B串中所有长度为L的子串,有多少个是两两相同的”,那么这个直接用求最长公共子串的DP加上统计方案数即可,注意细节;那么这题怎么做呢? 设i,j,k,保证ai=aj,ai=ak,j<ka_i=a_j,a_i=a_k,j<k这三个条件 那么有结论原创 2017-07-11 20:32:43 · 488 阅读 · 0 评论 -
【GDOI 2017】【JZOJ 1502】小学生语文题
Description给出一个原始串和目标串,要求在原始串上不停的把后面的字符移动到前面去,用最少的步数使两串相同。 n<=2000n<=2000Solution用DP:fi,jf_{i,j}表示目标串匹配到了i,原始串匹配到了j, 那么当前有两种选择: 1. 如果两位置字符相同,则直接匹配; 2. 当前这位的目标串然后面的来匹配,先跳过; 3. 当前这位的原始串去匹配前面跳过的目标串(当原创 2017-05-12 12:43:47 · 582 阅读 · 0 评论 -
【JZOJ 3870】单词检索
Description小可可是学校图书馆的管理员,现在他接手了一个十分棘手的任务。 由于学校需要一些材料,校长需要在文章中检索一些信息。校长一共给了小可可N篇文章,每篇文章为一个字符串。现在,校长需要他找到这样的单词,它至少在这N篇文章中的M篇文章里出现过,且单词长度为L。可是,工作量十分庞大,但校长又急需小可可完成这项任务。 现在他向你求助,需要你编写程序完成这项艰巨的任务。Solution这原创 2017-01-16 22:42:21 · 477 阅读 · 0 评论 -
【JZOJ 4624】字符串匹配
DescriptionSolution很显然的KMP嘛, 把T串加长,然后把n求个余数然后除一下,再倍长后做几遍KMP即可, 复杂度:O(n)O(n)原创 2016-07-13 15:48:38 · 677 阅读 · 0 评论 -
【GDOI 2016 Day1】第二题 最长公共子串
抽象题意:给出两字符串S,T,求经过一些奇怪的操作后的最长公共子串Solution很显然一些有交集的区间是可以合并的,一个区间内我们只需要记录每个字母的个数,我们就可以枚举两个字符串的相对位置,然后在重叠的部分用指针维护,设区间i,j是合法的,我们现在把j往后移一位,j所在的区间的字母$T_j$个数就-1,然后把再移动指针i去使其合法,i所在的区间的$T_i$个数就+1,并且i++;直到合法或移爆原创 2016-05-17 12:48:52 · 1038 阅读 · 0 评论 -
【JZOJ 3427】归途与征程
Solution题意简化以后就是:在b串的同构中,有多少个可以按顺序匹配多个串。我们可以先把a串拆开,每个做一遍KMP的预处理,倍长b串,枚举b串的开头,依次匹配过去,每次匹配的时候,记录一下上一次匹配失败的位置,直接从上次匹配失败的地方开始匹配;成功是也记录一下,判断一下原创 2016-05-31 12:49:34 · 1206 阅读 · 0 评论 -
【GDOI2016模拟3.9】暴走的图灵机
Description solution显然,这是一个像斐波拉契数列的东西,问题变成了求这个序列操作(n-1)次后与T的最大匹配, KMP自己学当我们“左手右手一个慢动作”搞出两个长度大于m的串(设为A串和B串),这是我们来模拟一下A,B串之后的变化: A B AB BAB ABBAB BABABBAB …….我们又发现:因为A,B串的长度是大于m的原创 2016-04-14 18:58:09 · 750 阅读 · 0 评论 -
【JZOJ 6028】【GDOI2019模拟2019.2.23】字符串
DescriptionSolution先考虑对一个串的子串求不同子串的个数怎么做,先对询问离线,考虑不断右移右端点,同时维护左端点为1~i的答案,显然对于一种相同的子串,只计算最右边的,在SAM中,一个节点代表了一些子串,而这些子串Right的最大值,也就是Fail树上这个点的所有儿子的Right最大值,所以每次加入一个点,相当于更改一条链上点的Right最大值,我发现这个就是L...原创 2019-02-26 21:44:08 · 399 阅读 · 0 评论