
广义后缀自动机
Mys_C_K
人生有许多道:曾经踏足的是道,即将踏往的也是道,那什么才是道呢?唯有脚下走的才是道。一切精神或者物质都归于虚无,然后从混沌中衍生出三万道。在悲喜间涉足一条无数前人经历过,且将有无数后人奔赴的道,无论是否已经或者将要到达彼岸,然后便不再回头或是左顾右盼,即使有些道繁盛至极,夜灯如昼,无数人一浪又一浪的涌去,造就了世人皆知的辉煌;即使有些道草木凋敝,荒草丛生,只等勇敢的开拓者斩开荆棘,创造一片天地;这些都无所关,无所在意,彼岸何如、来日何方甚至过往旧事都化作一缕云烟,飘渺碧霄,我自撷高山之月色,独随足落处往行。
展开
-
3473 字符串 - 后缀自动机 - 线段树合并
往上题解很多复杂度其实是和串总长有关的,如果给你一颗Trie就gg了。SAM上一个点的答案是其parent树中所有点的答案的并集的结论是不对的,因为有可能当前这个节点可以表示一条从根出发到某个点的路径,这条路径没有后继,但是一个节点对应的这样的路径显然不超过一个,因此其线段树初始化为相应区间即可,最后跑一边线段树合并即可,线段树合并的时候遇到一个满的区间就return掉。另,这个题求得是重复子串算...原创 2018-04-27 23:18:30 · 361 阅读 · 0 评论 -
bzoj 4502 串 - 广义后缀自动机 - AC自动机
又是愣把串总长复杂度的题写成了给Trie大小的题 (我又可以造题啦!开森 做法是这样的,考虑一个串会有很多种拼接办法,我们取第二个前缀最短的办法。 对应到AC自动机上就是,你先枚举第二个前缀,假设在AC自动机上的节点是x,那么你不能选择一个y,存在一个从y出发的(从x跳到fail[x]丢失的那个前缀)的转移。考虑补集转化,就是统计有多少节点存在这样的转移(根除外,因为第一个串非空),换言之,...原创 2018-07-21 22:44:14 · 481 阅读 · 0 评论 -
[CTSC2012] bzoj 2806 Cheat - 广义SAM - 单调队列优化dp - 二分
首先用广义SAM求出每个询问串以每个位置结尾的最长匹配长度,然后二分答案然后dp即可。注意到转移区间显然单调所以单调队列即可。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<queue>#define SIG 2...原创 2018-08-02 15:39:35 · 268 阅读 · 0 评论 -
往事 - SAM - 启发式合并
题目大意:给你个Trie,求两个从根出发的字符串(不一定要到达叶子),使得LCP+LCS(这个是最长公共后缀)最大。 题解:建出SAM后,考虑parent树中每次合并两颗子树,启发式的把小的插到大的里面,显然每次插入的时候只会取dfs序的前驱和后继做LCA来更新答案。两个log。#include<iostream>#include<cstring>#incl...原创 2018-09-06 16:19:22 · 282 阅读 · 0 评论