雯舞

Love three things int he world -- Manchery

排序:
默认
按更新时间
按访问量

[后缀数组 后缀树] Codechef January Challenge 2018 #KILLKTH Killjee and k-th letter

建出后缀树,记录每个子串的出现次数,然后二分下答案在哪个子串中就好了 退役选手不会写后缀自动机 #include #include #include #include #define pb push_back using namespace std; typedef long long ll;...

2018-01-19 14:07:23

阅读数:160

评论数:0

[广义后缀自动机 SG值] 51Nod 1869 那些年,我们一起讲的故事

简直 在众人的帮助下理解了一个假题意 看完题解知道真题意 大概是每次加一个字符 这个串仍然要是Trie树的子串 直接建SAM 然后求SG值 不超过度数+1 也就是27 然后先手必胜 两边SG不同 那么按字典序数一数就好了#include<cstdio> #include<...

2017-06-13 21:58:55

阅读数:321

评论数:0

[manacher 后缀自动机 || 回文自动机] BZOJ 3676 [Apio2014]回文串

本质不同的回文串只有O(n)O(n)个 就是做manacher时变长的时候 那么直接在SAM上找找出现几次就好了 回文自动机?我不会啊#include<cstdio> #include<cstdlib> #include<map> #include<a...

2017-04-28 20:33:48

阅读数:270

评论数:0

[后缀自动机 后缀树 虚树] BZOJ 3879 SvT

挺无脑的一个题 直接反串后缀自动机建出后缀树 然后询问建虚树#include<cstdio> #include<cstdlib> #include<algorithm> using namespace std; typedef long long ll;inl...

2017-04-24 21:00:44

阅读数:418

评论数:0

[后缀自动机 线段树] BZOJ 1396 识别子串 & BZOJ 2865 字符串识别

后缀自动机建起来发现出现一次的子串必然由|right(x)|==1的状态也就是叶子节点贡献 对于每个叶子x 在串上的位置为p 令l为maxs(x) 令r为maxs(fat(x)) 那么区间[p-r+1,p]用r+1更新答案 区间[p-l+1,p-r]用一条斜率为-1的线段更新答案 这个可以...

2017-01-30 19:30:01

阅读数:452

评论数:0

[广义后缀自动机 set启发式合并 || dfs序 树状数组 离线] BZOJ 2780 [Spoj]8093 Sevenk Love Oimaster

可以直接用[广义后缀自动机] BZOJ 3473 字符串 & BZOJ 3277 串 & Codeforces 204E #129 (Div. 1) E. Little Elephant and Stringsset启发式合并的方法 还有一种是离线做法 通过dfs序转化为一段...

2017-01-29 22:36:31

阅读数:257

评论数:0

[广义后缀自动机 Trie树] BZOJ 3926 [Zjoi2015]诸神眷顾的幻想乡

因为叶子节点很少 我们把20个trie合并成广义后缀自动机 然后直接跑就好了 trie树构建自动机的时候 回溯的时候把last还原#include<cstdio> #include<cstdlib> #include<set> #include<cst...

2017-01-29 22:24:40

阅读数:268

评论数:0

[广义后缀自动机] BZOJ 3473 字符串 & BZOJ 3277 串 & Codeforces 204E #129 (Div. 1) E. Little Elephant and Strings

现在给定你n个字符串,询问每个字符串有多少子串(不包括空串)是所有n个字符串中至少k个字符串的子串(注意包括本身)广义后缀自动机的模板题啦 构建方法和单串的自动机是基本一样的 每次考虑完一个串把last返回root#include<cstdio> #include<cstdl...

2017-01-29 22:22:19

阅读数:524

评论数:0

[后缀自动机 模板题 || 字符串Hash] HDU 4622 Reincarnation

题目大意:询问子串lr的不同子串数目 暴力建n次后缀自动机 存一下不同子串数目就好啦 不同子串数目 有两种做法 一种是按拓扑序DP 还有就是∑maxs(x)−maxs(fa(x))\sum maxs(x)-maxs(fa(x)) 显然第二种方法更好些 更通用#include<cs...

2017-01-29 22:16:36

阅读数:377

评论数:0

[二分 后缀自动机 单调队列优化DP] BZOJ 2806 [Ctsc2012]Cheat

先在后缀自动机上匹配 求出mat[i]表示作文的每个位置i为结尾最长能匹配多长二分L 设f[i]表示前i个字符熟悉的部分最多有多长 那么f[i]=max(f[i-1],f[j]+i-j) 其中j要满足i-j>=L&&i-j+1<=mat[i] 得i-mat[i]...

2017-01-28 21:29:18

阅读数:211

评论数:0

[后缀自动机 LCT] BZOJ 2555 SubString

构建后缀自动机 parent树会改变形态 这样|right(x)|也会发生变化 我们用LCT大力维护一发就好了#include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm&...

2017-01-28 21:26:09

阅读数:173

评论数:0

[后缀自动机 构建后缀树 树形DP] BZOJ 3238 [Ahoi2013]差异

反串的parent树就是后缀树 lcp就是他们的lca的深度 也就是后缀自动机上的maxl 然后树形DP一下就好了#include<cstdio> #include<cstdlib> #include<algorithm> using namespace s...

2017-01-28 21:22:57

阅读数:307

评论数:0

[后缀自动机 parent树] BZOJ 4566 [Haoi2016]找相同字符

对一个串A建自动机 另一个串B在上面匹配 考虑统计答案 对于当前匹配到的点,那么它parent树中的祖先代表的串现在肯定也出现了 对于每个出现的点,它代表了maxs[x]-maxs[fa[x]]个串 这些串出现了|right(x)|次,贡献就是|right(x)|*(maxs[x]-maxs...

2017-01-28 21:17:24

阅读数:248

评论数:0

[后缀自动机] POJ 1743 Musical Theme

又一道男人八题哦 先差分 然后就是找出现两次的不相交的最大子串 考虑对于每个点 记录它的right集的最值 用差值和maxl的最小值更新答案#include<cstdio> #include<cstdlib> #include<algorithm> #inc...

2017-01-28 21:13:35

阅读数:276

评论数:0

[K大子串 后缀自动机 模板题] BZOJ 3998 [TJOI2015]弦论

题目大意:分别求 重复子串算一次 重复子串算多次 的 K小子串若重复子串算一次 那么每个状态计数1次 若重复子串算多次 那么每个状态计数|right(x)|次 然后跑就好了#include<cstdio> #include<cstdlib> #include<al...

2017-01-28 21:09:10

阅读数:270

评论数:0

[最小循环表示 后缀自动机 模板题] BZOJ 2882 工艺

题目大意:最小循环表示有O(n)O(n)的简洁巧妙的解法 但是为了练习后缀自动机 把串复制一遍,构建后缀自动机,每次选择最小的边转移即可 因为字符集很大,所以转移边用map来存即可#include<cstdio> #include<cstdlib> #include&...

2017-01-28 21:02:02

阅读数:387

评论数:0

[后缀自动机 模板题] SPOJ 8222 Substrings

题目大意:求某个长度的所有子串中出现次数最多的次数每个状态对应一段长度区间的子串 right集合的大小就是出现次数 那么我们用|right(x)|去更新f[maxs[x]]的值,最后从大到小用f[i]去更新f[i-1]的值即可#include<cstdio> #include<...

2017-01-28 20:59:21

阅读数:481

评论数:0

[后缀自动机 模板题] SPOJ 1812 Longest Common Substring II & BZOJ 2946 [Poi2000]公共串

后缀自动机模板题啦 对一个串建后缀自动机,其他串在上面匹配 每个状态记录每个串最长匹配长度的最小值 然后找到所有状态中答案最长的一个即可 需要注意的是这里不仅要用到自动机的性质 还要用到树的性质 如果一个状态被走到了 那么他的link也一定出现了 因为link对应的就是这个东东的一个子串...

2017-01-28 20:53:10

阅读数:242

评论数:0

[后缀自动机 模板题] SPOJ 1811 Longest Common Substring

后缀自动机模板题啦 对A建自动机 B在上面匹配 假设现在到B[i-1]的最长公共子串长度为l 如果当前节点有B[i]这个孩子,那么直接就l++即可。 如果没有就找一直向前找suffix_link,直到找到有B[i]这个孩子的节点 类似KMP中的next和AC自动机中的fail#inclu...

2017-01-28 20:47:04

阅读数:254

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭