摘要: 题意:给3个字符串,问从1到min(l1,l2,l3)的长度的子串,找到从该位置长度为l,三个子串相同的三元组的个数 题解:把3个子串用分隔符串起来.然后分开统计每个节点在三个串中出现次数.最后乘起来就是该节点表示的三元组个数,然后l[fa[i]]+1到l[i]有贡献,对l差分一下就好了 // pr 阅读全文
posted @ 2019-04-16 20:24 walfy 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 题意:有一个串s,n个串模式串t,问s的子串中长度最小的包含t k次的长度是多少 题解:把所有t建ac自动机,把s在ac自动机上匹配.保存每个模式串在s中出现的位置.这里由于t两两不同最多只有xsqrt(x),x是总长度.然后双指针扫一遍即可 这里有一个很重要的优化技巧,由于ac自动机上不是每个点都 阅读全文
posted @ 2019-04-16 19:41 walfy 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 题意:给你一个字符串s有一些位置被ban了,字符串t的价值是|t| t在s中出现次数而且终点没有被ban.问你最大的价值是多少 题解:很明显t是s子串,建个sam,对于sam中每个位置,我们需要删除中点被ban的次数,只需要在sam上走一遍,到被ban的点时需要更新fa链,打个标记,根据topo序差 阅读全文
posted @ 2019-04-16 13:04 walfy 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 题意:给一个n k的循环字符串可能从任意地方断开,然后m个长度k的字符串,问你能不能用下面的字符串(每个最多用一次)构成上面的字符串,能循环移位 题解:对下面的串建ac自动机,记录字符串最后一个位置,然后把上面的串扩展k个,再在ac自动机上跑确定每个节点能匹配的字符串是谁,然后枚举k个位置作为起点, 阅读全文
posted @ 2019-04-16 12:43 walfy 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 题意:给你n个01字符,每次问你前缀的所有本质不同的子串,由摩斯密码组成的方案数和. 题解:离线处理,把字符建sam,通过topo序来dp计算每个节点表示的子串方案数的和.统计答案时,把n个字符挨个匹配过去,把所有经过的节点加上方案数,还有每个节点的fa链,也要统计(因为是当前串的后缀),用一个vi 阅读全文
posted @ 2019-04-16 10:56 walfy 阅读(165) 评论(0) 推荐(0) 编辑