随笔分类 - SAM
摘要:又被机房神犇肉丝哥哥和glory踩爆了 首先这个答案的输出方式有点套路,当前的答案=上一个答案+每一个后缀的f值=上一个答案+上一次算的每个后缀的f值+当前每个后缀的深度 这个题意给了个根深度为-1有点诡异,考虑它的现实意义是这个后缀在前面出现了几次,这些后缀的深度和就是前面有多少子串和后缀是能匹配
阅读全文
摘要:暴毙选手又被zo老师D费了 暴力是n^2的都会 有另一个点分的做法,就是看成两条链,然后在后缀树上跑,找到对应原串位置拼起来,是n*(logn+m) 然后就根号分治,树的大小超过阈值就点分,小于就暴力 大家说推出来的阈值是sqrt(m),然而我强行设成3000跑得最快啊QWQ
阅读全文
摘要:总的来讲,SAM难想,SA难写,SAM跑得快 SAM: 这题其实巨像bzoj2780 建了广义SAM以后,用dfs序+树状数组求出每个点在多少不同的串里面 然后枚举每个串在上面跑就行了。 SA: 然后如果要上后缀数组的话,把它们接在一起弄,中间插不同的乱七八糟的符号,先套路一手st表求LCP 对于每
阅读全文
摘要:建完sam以后自然而然的就是建后缀树了。 问题转化成多次询问一棵树(fail树)的子树中有多少不同颜色的节点。 等于一个序列的一段有多少种不同的颜色 这是个套路题,离线dfs序+树状数组可解(为什么我看了这么久愣是没看出来呢....) 多次询问一棵树(fail树)的子树中有多少不同颜色的节点。 ==
阅读全文
摘要:因为叶子只有20个,那么对于每个叶子节点当作根建一棵trie,然后一条路径是某一个trie上的一条上到下的路径 然后......广义sam sb题
阅读全文
摘要:一个串建SAM,一个串在上面跑DP 需要注意,走到当前节点的时候,有可能走的是近路,并不能把当前节点表示的所有子串匹配,这个时候就要记录一下走的步数(类似caioj那题),那些被当前点表示的,长度不超过步数的子串才有资格更新答案。 这个东西我用g来维护 然后他去更新其他人就没有这个限制了,用h表示覆
阅读全文
摘要:子串母串跑合并答案 一个点的fail的dep是比任意一条根到这个点路径长度要小的。 那么改就可以直接来了。
阅读全文
摘要:被hhn d飞a 一直不想(gan)做这题 首先先把作文库插入SAM,两两间插个2(这里产生很多细节!空间要开到3,而且深度是要累计的) 对于每个作文,先在SAM跑一遍,求出match数组,该数组表示以当前为结束点往前最长能被自动机识别的长度 二分答案 考虑DP,f[i]表示到第i个位置,最多能够识
阅读全文
摘要:就是SAM嘛。 答案累加就是dep[parent[now]]-dep[now] 有个比较坑的就是要用map。。
阅读全文
摘要:前几天写的题,今天补写个blog T的情况get right集合的时候特判一下。 因为SAM就是有序的,所以可以dfs求解。 把parent树构建出来,sum表示当前子树的right和,搜一下就出来了。 upd:第二次写这个题,搜索的时候记得减去right[now]
阅读全文