
自动机
文章平均质量分 57
处理字符串
ssl_fuyang
ヾ(◍°∇°◍)ノ゙
展开
-
后缀排序【模板】【后缀树组SA】
后缀树组原创 2022-08-10 07:47:47 · 198 阅读 · 0 评论 -
后缀自动机SAM【模板】
>Link luogu P3804 >Description 给定一个只包含小写字母的字符串S, 请你求出 S 的所有出现次数不为 1 的子串的出现次数乘上该子串长度的最大值。 ∣S∣≤106|S|\le 10^6∣S∣≤106 >解题思路 在我题单里躺了好久,终于学了,我太蒻了qwq 大佬的博客 (注意这里是有两个结构的,parent tree和后缀自动机,要根据它们的性质灵活运用) 这道题要求的是最大的出现次数*长度 对于一个节点,这里的串的 endposendposendpos原创 2021-11-06 16:55:51 · 127 阅读 · 0 评论 -
AC自动机(二次加强版)【AC自动机】【拓扑排序】
>Link luogu P5357 >Description 给你一个文本串 SSS 和 nnn个模式串 TiT_iTi,求每个 TiT_iTi 在 SSS 中出现的次数 1≤n≤2×1051≤n≤2×10^ 51≤n≤2×105,T1..nT_{1..n}T1..n 的长度总和不超过2×1052×10^52×105 ,SSS 的长度不超过 2×1062×10^62×106 >解题思路 其实可以发现这道题跟AC自动机(加强版)的操作差不多,但是直接用加强版的方法交上去会TLE,因原创 2021-10-22 11:14:48 · 207 阅读 · 0 评论 -
回文自动机PAM【模板】
>Link luoguP5496 >Description 给出一个字符串 sss ,求 sss 中以每个字符结尾的回文子串个数。 >解题思路 回文自动机模板题 因为回文子串分为奇数和偶数两种,所以我们要建两棵树,以111为根的为奇数树,以000为根的为偶数树 回文子串是“折叠”挂在树上的,也就是从下往上读到根再往下读(奇数树上最上一层的字母只用读一次,所以初始得设len1=−1len_1=-1len1=−1,这样不会多加) failfailfail指针指向最长回文后缀,所以我们要记原创 2021-08-11 19:17:15 · 267 阅读 · 0 评论 -
前缀匹配 / 玄武密码【AC自动机】
>Link ybtoj前缀匹配 luogu P5231 >解题思路 其实也是AC自动机的模板稍微改下就行了 根据母串寻找时,对走过的节点进行标记,最后求答案时再根据nnn个子串在TrieTrieTrie树上走一遍,找到每个子串路径上被标记过的最大深度 >代码 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <原创 2021-07-05 14:37:10 · 229 阅读 · 0 评论 -
单词频率【AC自动机】
>Link ybtoj单词频率 >Description 一共有nnn个单词,询问每个单词在所有单词中出现了几次(以子串的形式出现) >解题思路 多个子串的出现次数,提醒我们用 AC自动机 但是之前做的都是多个子串在一个字符串中的出现次数,现在求的是多个子串在多个字符串中的出现次数,如何处理呢? 用sumxsum_xsumx表示在TrieTrieTrie树上,从根节点到xxx组成的字符串,是多少个单词的前缀 用ansxans_xansx表示在TrieTrieTrie树上,从根节点到原创 2021-07-03 17:07:45 · 234 阅读 · 0 评论 -
AC自动机(加强版)【AC自动机】
>Link luogu P3796 >解题思路 其实这道题就是AC自动机朴素版的改编,找到一个子串时就标记下来,记录下每一个子串对应出现的个数,最后取最大值就行了 >代码 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> #define N 100010 using namespace s原创 2021-07-03 10:59:12 · 137 阅读 · 0 评论 -
单词查询【AC自动机】【模板】
>Link ybtoj单词查询 luogu P3808 >解题思路 AC自动机大概就是在trie树上搞kmp kmp是一个字符串自己跟自己匹配,AC自动机就是多个字符串混着匹配(?) 首先常规的,我们要把模式串们建立一个TrieTrieTrie树 接着在TrieTrieTrie树上跑kmpkmpkmp,那么肯定需要求出每个点的nxtnxtnxt,叫failfailfail指针也叫失配指针 既然是混着匹配,nxtnxtnxt也不一定要指着自己,也就是nxtnxtnxt要指向别的模式串(我大概是这原创 2021-07-03 10:12:05 · 178 阅读 · 0 评论