上一页 1 ··· 42 43 44 45 46 47 48 49 50 ··· 63 下一页
摘要: "题目" 听说这是广义$SAM$的板子 看来对于广义$SAM$我也就只会板子了 叶子数很少,所以可以枚举每一个叶子节点作为根建一遍$Trie$树 只需要对$Trie$树建出$SAM$就好了 跟对单串建$SAM$不同的就是$last$节点是这个点在$Trie$树上的父亲 并不是很清楚为什么需要在$so 阅读全文
posted @ 2019-01-14 15:04 asuldb 阅读(164) 评论(0) 推荐(0)
摘要: [题目][https://www.lydsy.com/JudgeOnline/problem.php?id=4892] 好像用$SAM$做的都是$dfs$啊 ~~其实这里也是搜索~~ 如果用$SAM$来做非常好理解,就是从$SAM$上匹配这个字符串,允许有不超过三条转移边不一样 于是$dfs$做法非 阅读全文
posted @ 2019-01-14 13:50 asuldb 阅读(173) 评论(0) 推荐(0)
摘要: "题目" 为什么没人用$SAM$啊 我们先把原来的模式串建一遍$SAM$,之后我们就可以求出$SAM$上每一个节点的$|endpos|$就可以知道每一个子串出现的次数了,也就是在模式串上的匹配数了 之后我们设$dp[i][j]$表示前$i$个里组合出的子串在$SAM$上匹配到了$j$位置的方案数是多 阅读全文
posted @ 2019-01-11 13:22 asuldb 阅读(238) 评论(0) 推荐(0)
摘要: 写板子了,可持久化$Trie$的板子了 其实和主席树写法类似,还是存好左右儿子之后存好权值 之后差分去查询就好了 这道题第一问我们直接$dfs$序转化成区间 第二问搞成$x,y,lca(x,y),fa[lca]$之后一起差分就好了 代码 阅读全文
posted @ 2019-01-10 21:59 asuldb 阅读(192) 评论(0) 推荐(0)
摘要: "题目" 不会广义$SAM$啊 但信仰插入特殊字符就可以搞定一切了 我们先把所有的串搞在一起建出一个$SAM$,记得在中间插入特殊字符 对于$parent$树上的一个节点,只有当其$endpos$集合中的所有元素都来自于同一个串的时候我们才对它进行统计 所以我们需要维护一个$parent$树上子树最 阅读全文
posted @ 2019-01-10 12:43 asuldb 阅读(200) 评论(0) 推荐(0)
摘要: "题目" $SAM$+线段树 我竟然还会写线段树真是感人至深 考虑到我们只能计算出现一次的子串,所以我们直接先求一个子树和,只对$|endpos|=1$的点操作就好了 我们在$SAM$插入的时候可以先存存好每一个前缀的结尾位置在哪里,之后我们对于每一个前缀讨论其出现次数为$1$的后缀 显然在$par 阅读全文
posted @ 2019-01-06 10:53 asuldb 阅读(148) 评论(0) 推荐(0)
摘要: $SAM$板子,直接建出$SAM$之后把每个串放上去匹配就好了 代码 cpp include include include include define maxn 10000005 define re register define LL long long define max(a,b) ((a 阅读全文
posted @ 2019-01-05 17:45 asuldb 阅读(139) 评论(0) 推荐(0)
摘要: "题目" 对于$k\in[1,n]$求出长度为$k$的子串出现次数最多的出现了多少次 我直到现在才理解后缀自动机上的子树和是什么意思 非常显然的一点是 $$endpos(link(u))⊇endpos(u)$$ 考虑到$link(u)$有多个儿子 于是还需要$endpos$的另外一个性质 $$end 阅读全文
posted @ 2019-01-05 16:16 asuldb 阅读(150) 评论(0) 推荐(0)
摘要: "题目" 在$DAG$上跑一个$dp$就好了 设$ans_i$表示到了$SAM$的$i$位置上所有的子串形成的数的和,之后我们顺便记录一个方案数$d_i$ 之后我们直接转移就好了 $$ans_v+=ans_u\times 10+w[u,v]\times d_u$$ $$d_v+=d_u$$ 答案是$ 阅读全文
posted @ 2019-01-05 16:00 asuldb 阅读(133) 评论(0) 推荐(0)
摘要: "题目" 好题啊 $SAM$+单调队列优化$dp$ 首先这个$L$满足单调性真是非常显然我们可以直接二分 二分之后套一个$dp$就好了 设$dp[i]$表示到达$i$位置熟悉的文章的最大长度 有一个非常显然的$dp$方程 $$dp_i=max\{dp_j+i j\}\ (i j =mid)$$ 同时 阅读全文
posted @ 2019-01-05 15:47 asuldb 阅读(135) 评论(0) 推荐(0)
上一页 1 ··· 42 43 44 45 46 47 48 49 50 ··· 63 下一页