
字符串
jokerwyt
这个作者很懒,什么都没留下…
展开
-
jzoj6748 回文串(字符串结论计数,反演, min25)
一道字符串结论+数论的题原创 2020-07-16 11:29:18 · 428 阅读 · 0 评论 -
CF587 F Duff is Mad (ac自动机,根号分治)
题意给出n个串,m个询问形如:S[l],S[l+1]..S[r]S[l],S[l+1]..S[r]S[l],S[l+1]..S[r]在S[t]S[t]S[t]中出现的次数之和。∑∣s∣≤105,m≤105\sum |s| \leq 10^5,m\leq10^5∑∣s∣≤105,m≤105思路搞半天都搞不出一个log的考虑上个根号算法:所有串建ac自动机,记m为所有串的长度和。S[t...原创 2019-11-02 07:13:01 · 331 阅读 · 0 评论 -
CF666 E Forensic Examination (SAM,线段树合并)
SAM 线段树合并 子串出现次数原创 2019-10-31 18:59:00 · 213 阅读 · 0 评论 -
jzoj6152. 【GDOI2019Day2模拟2019.4.29】Endless (倍增维护并查集,平方串)
对于长度为x的平方串,只需要每隔x做一个关键点,然后对相邻关键点做lcp和lcs就可以找出每一个平方串。sa或者hash+二分都是可以的找出平方串的区间,下面要实现的操作就是实现区间中x和x+le合并。用倍增维护一下并查集,开log个并查集,若x,y在第i个并查集里被并起来,意味着x..x+2i−1x..x+2^i-1x..x+2i−1与y..y+2i−1y..y+2^i-1y..y+2i...原创 2019-04-29 22:06:31 · 328 阅读 · 0 评论 -
jzoj4387 【GDOI2016模拟3.15】基因合成 (回文树上dp)
题面 n<=1e5回文树的dp首先最优解大概是先构出一个较长的回文串,然后再将其他字符在首尾添加上。考虑到操作2之后必定是偶回文串,我们可以先建出回文树,然后在上面dp.对于奇回文串,我们可以不将他作为那个“较长的回文串”, 因为可以通过取他的一些子串来等价。我们想计算出构造出每一个偶回文串需要多少步数。对于偶回文串,其他回文串要构出他, 首先要是他的...原创 2018-07-20 07:55:57 · 390 阅读 · 0 评论 -
jzoj3149 【GDKOI2013】 大山王国的城市规划 (回文树,最大独立集转最小路径覆盖转二分图)
题意给一个1e5的字符串,选出尽量多的回文串(可以相交)使得他们两两互不为子串。算法先建出pam,然后将fail边与转移视作有向边(fail为父亲指向儿子),然后可以发现包含一个回文串x的其他回文串都可以走到x的那个点 转化为dag求最大独立集。根据dilworth定理(好像叫这个?),最大反链 = 最小链覆盖(最大独立集 = 最小路径覆盖),于是即为求最小链覆盖。拆出入点,...原创 2018-07-19 20:54:06 · 651 阅读 · 0 评论 -
jzoj3291 【JSOI2013】快乐的JYY (回文树)
题面给定两个字符串A和B,表示JYY的两个朋友的名字。我们用A(i,j)表示A字符串中从第i个字母到第j个字母所组成的子串。同样的,我们也可以定义B(x,y)。 JYY发现两个朋友关系的紧密程度,等于同时满足如下条件的四元组(i,j,x,y)的个数: 1) 1≤i≤j≤|A| 2) 1≤x≤y≤|B| 3)A(i,j)=B(x,y) 4) A(i,j)为回文串 这里|A|表示字符串...原创 2018-07-11 19:33:36 · 228 阅读 · 0 评论 -
jzoj3654 【APIO2014】回文串(palindrome) (回文树、自动机)
题面考虑一个只包含小写拉丁字母的符串 s。我们定义 s的一个子串 t的“出现值”为 t在 s中的出现次数乘以t的长度。 请你求出s的所有 回文子串中的最大出现值。回文树裸题回文树: 一个点代表一种内容相同的回文串。 转移表示在此回文串前后缀加字母。 fail指向当前回文串的最长回文后缀。 last是当前加入完毕的总串的最长回文后缀所在点。 (为了接下一个字母)题目要求为长...原创 2018-01-30 19:51:42 · 346 阅读 · 0 评论 -
jzoj5272 神奇的重复序列 (寻找性质)
题面分析魔幻的题目。 对于两个起点x,y,设间隔p=y-x,容易看出若i = j (mod p)i~=~j~(mod~p),那么s[i]与s[j]的值应该相等。也就是p个一循环。这是很关键的性质 然而我并没有发现???! 现在考虑所有%p相等的位置,当然是都改成出现次数最多的最优。 那么我们枚举p,维护一个f[x][c]表示模数为x的位置c的出现次数。 我们还需要求个s[x]与mx[x],原创 2017-08-14 22:41:40 · 321 阅读 · 1 评论 -
jzoj5167 【NOIP2017模拟6.26】下蛋爷 [ac自动机,概率递推]
题目大意Part1. 给主串与子串,求每个子串出现次数。 Part2. 有k个回合,每一回合“所有出现次数最小的子串“ 会有p的概率被一起删除,求每一个子串留下的概率。Part1 直接上ac自动机,注意fail[root]=root,然后特判。Part2 用一个概率递推 很容易想到不需要知道到底有哪些被删除了,只需要知道在第i轮删k次的概率就可以了。 答案就是∑rank[i]−1j=0f[k][原创 2017-06-30 20:49:25 · 440 阅读 · 0 评论 -
KMP算法相关
辣鸡算法这么难理解KMP用途字符串匹配。给出一个主串s和另一个串f,问f是否s的子串。暴力的话最坏复杂度要到O(mn),而用KMP的话通过一个O(m)的预处理就可以O(n)的 处理出结果。主要思想就是跳过没有必要匹配的起点,直接去找有可能可以匹配的起点。充分利用了已知的数据。到底要移动多少步?神奇的♂max函数定义max(m)指m中最长相等前后缀 如上图,设灰色部分为m,在字符a与b比较失败后原创 2016-05-08 16:53:36 · 839 阅读 · 2 评论 -
后缀数组-sa-SuffixArray学(复)习小记
功能用O(NlogN)O(NlogN)O(N log N)的时间将某个串的后缀排序,并利用这个做神奇的东西。思想(倍增法)sa[i],第i小后缀的起点 rk[i],以i为起点的后缀排第几。 注意要保证在排序过程中,内容相同则rk相同假设我们已经将每个后缀的前k个字符排序,然后显然可以利用k个字符的排名去得到k*2个字符的排名,相当于多增加一个关键字。(就是倍增的思想)其...原创 2017-03-16 18:48:04 · 993 阅读 · 0 评论