字符串
nymph181
这个作者很懒,什么都没留下…
展开
-
【JZOJ比赛】2019.11.11 JZOJ B组
练习赛原创 2019-11-11 20:13:26 · 217 阅读 · 1 评论 -
【JZOJ比赛】2019.11.8 JZOJ B组
练习赛原创 2019-11-08 21:53:39 · 205 阅读 · 0 评论 -
【二分答案】JZOJ_3337 wyl8899的TLE
题意给出AAA、BBB两个字符串,至多将AAA串修改一个字符,使得A[1..k]A[1..k]A[1..k]是BBB的子串且kkk最大。思路枚举BBB的开头,二分LCPLCPLCP,然后用字符串hashhashhash判断。设LCP(A,B[i..m])LCP(A,B[i..m])LCP(A,B[i..m])为lenlenlen,显然是要修改A[len+1]A[len+1]A[len+1]的...原创 2019-07-09 19:18:35 · 230 阅读 · 0 评论 -
【字符串 LCA】JZOJ_4669 弄提纲
题意给出一个字符串,有mmm个询问,每次给出lll与rrr,问以lll和rrr结尾的字符串的公共后缀中,有多少个是原串的前缀,以及公共后缀与原串前缀的最大公共长度。题意kmpkmpkmp算法中,求出了failifail_ifaili代表以iii结尾的字符串与前缀的最长匹配长度。于是可以从lll和rrr跳到相同的一个位置,求出答案,但是复杂度很高。所以我们可以把lll和rrr同时要跳到...原创 2019-05-24 20:04:55 · 133 阅读 · 0 评论 -
【字符串 manacher】洛谷_4555 [国家集训队]最长双回文串
题意输入长度为nnn的串SSS,求SSS的最长双回文子串TTT,即可将TTT分为两部分X,Y,(∣X∣,∣Y∣≥1∣X∣,∣Y∣≥1)X,Y,(|X|,|Y|≥1∣X∣,∣Y∣≥1)X,Y,(∣X∣,∣Y∣≥1∣X∣,∣Y∣≥1)且XXX和YYY都是回文串。思路我们可以设lil_ili为以iii结尾的回文字符串的最长长度,rir_iri为以iii开头的回文字符串的最长长度。求这两个东西...原创 2019-01-22 20:11:57 · 314 阅读 · 0 评论 -
【字符串 manacher】洛谷_3805 manacher算法
题意求一个字符串中最长回文串的长度。思路manachermanachermanacher算法。首先我们先在字符串空隙中插入符号,以便处理偶数长度的回文串。设hwihw_ihwi为以iii为中心最多能往旁边扩展的长度,maxrightmaxrightmaxright为当前匹配到的最右边的回文串。枚举1∼n1\sim n1∼n,如果i<maxrighti<ma...原创 2019-01-22 15:48:52 · 209 阅读 · 0 评论 -
【KMP】洛谷_3375 KMP字符串匹配
题意给出A,B两个字符串,求出B串在A串中出现的位置以及B串中的每一个位置的next(就是代表B串中以当前位置结尾的子串和B的前缀可以匹配的最大长度)。思路KMP的模板题。我们设两个指针i,j(其中i指A,j指B),如果可以扩展j的话我们就让j+1,否则我们让j=next[j],把匹配的长度缩短,看能不能从这里继续扩展,直到j变成0后我们就重头开始匹配。求next的方法和这个类似,就是...原创 2018-05-26 22:53:23 · 360 阅读 · 0 评论 -
【KMP】POJ_1961 Perioid
题意给出一个字符串S,对S的每一个前缀,如果它的最小循环元的最大循环次数大于1,我们就输出这个前缀的位置和最大循环次数。思路我们可以利用KMPKMPKMP算法中的nextnextnext数组的性质发现,S[1S[1S[1~next[i]]=S[i−next[i]+1next[i]]=S[i−next[i]+1next[i]]=S[i-next[i]+1~i]i]i],且不存在更大的...原创 2018-08-17 16:06:24 · 191 阅读 · 0 评论 -
【KMP】洛谷_3435 OKR-Periods of Words
题意给出一个字符串,对于给定串的每个前缀i,求最长的,使这个字符串重复两边能覆盖原前缀i的前缀(就是前缀i的一个前缀),求所有的这些“前缀的前缀”的长度和。思路因为我们这里要求重复两边覆盖掉原前缀i,那么我们就可以想到next的前缀与后缀相等的性质。 举个例子:a b c c a b 其中前缀[5]:A{a b c c a}中的next[5]=1,说明了A[1~1]=A[5~5...原创 2018-08-17 19:58:21 · 380 阅读 · 1 评论 -
【Trie】LOJ_10050 The XOR Largest Pair
题意给出n个数,在其中选两个数,使它们的异或值最大,输出这个异或值。思路这道题我们可以用到字典树来对每个数进行一位一位地找。把一个数转成二进制,对它的每一位尽量找个相反的,这样子可以使得异或值最大。代码#include<cstdio>#include<cstring>#include<algorithm>using namespac...原创 2018-08-18 10:32:28 · 215 阅读 · 0 评论 -
【字符串哈希】CH_1401 兔子与兔子
题意给出一个字符串,判断其中的两个区间是否相等。思路设f[i]f[i]f[i]为字符串s[1∼i]s[1\sim i]s[1∼i]的basebasebase进制哈希值,则:f[i]=f[i−1]∗base+s[i]f[i]=f[i-1]*base+s[i]f[i]=f[i−1]∗base+s[i]取出s[l∼r]s[l\sim r]s[l∼r]的哈希值为:f[r]−f[l−1]∗bas...原创 2018-12-21 20:15:12 · 233 阅读 · 0 评论 -
【字符串哈希】SSL_1211 好文章
题意求出一个字符串中长度为mmm的子串有多少个不同的。思路mapmapmap可拿50分。字符串哈希,每次取出一段来判断是否重复。单哈希会被卡,这里用双哈希。这位大佬写的可能比较清楚,点击这里。代码#include<map>#include<cstdio>#include<cstring>using namespace std;const ...原创 2018-10-27 08:29:14 · 121 阅读 · 0 评论 -
【字符串】SSL_1216 So many prefix?
题意给出一个字符串,求出前缀长度为偶数的子串在这个字符串中出现的次数的总和。思路我们可以想到动态规划。设f[i]f[i]f[i]为前缀1∼i1\sim i1∼i中偶数串出现的次数(包括自己),可得:f[i]=f[next[i]]+(i%2==0)f[i]=f[next[i]]+(i\%2==0)f[i]=f[next[i]]+(i%2==0)其中next[i]next[i]next[i]...原创 2018-10-26 19:26:34 · 148 阅读 · 0 评论 -
洛谷_2580 于是他错误的点名开始了
题意给出N个字符串,再给出M个字符串,匹配M个字符串中的每一个字符串有没有在之前的N个字符串里出现过,如果有输出OK,如果和这M个字符串里有重复的就输出REPEAT,如果没有输出NO。思路用字典树来做。多开两个变量记录匹配的次数和一个节点是不是字符串的末尾。代码#include<cstdio>#include<cstring>#inclu...原创 2018-07-14 19:11:50 · 228 阅读 · 0 评论 -
【Trie】JZOJ_3126 大LCP
题意给出一些字符串,有q次询问,问前k个字符串中两两之间的最大的LCP(最长公共前缀)。思路因为是前k个,我们就可以用一个数组来记录。把每次读入的字符串存进字典树里,在放进字典树的过程中我们可以很容易地计算出它和之前的字符串的LCP,然后和前面的比较就好了。代码#include&amp;amp;amp;amp;amp;lt;cstdio&amp;amp;amp;amp;amp;gt;#include&amp;amp;amp;a原创 2018-07-14 16:36:15 · 186 阅读 · 0 评论