![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
后缀自动机
SAM
gongyuandaye
不要再问我会不会写可持久化非确定状态AC自动分块维护线段平衡仙人掌优化最小费用最大流预处理混合图上莫比乌斯反演莫队带花舞蹈链并查集树状数组套主席树预处理动态DP分治FFT求多项式逆元对数函数的指数函数用可持久化并查集合并最小费用循环流上插头DP了。
展开
-
UVA 1673 str2int (后缀自动机)
题意:给出nnn个字符串,求它们所有不同子串的数字和(取模)。 题解:后缀自动机 先将nnn个字符串拼接,然后建立sam,跑拓扑。 这里可以在串之间添加无效字符,也可以将lastlastlast指向rootrootroot,学到了学到了。 在遍历的时候,遇到topsam[i]topsam[i]topsam[i]若为初始状态,则jjj从1开始。 cnt[i]cnt[i]cnt[i]:从初始状态到状态...原创 2020-04-02 16:30:54 · 128 阅读 · 0 评论 -
CodeForces 235C Cyclical Quest (后缀自动机)
题意:给一个主串,再给出多个模式串,分别求主串中有多少个连续子串,与模式串循环同构。 题解:后缀自动机 因为要求循环同构,所以将模式串复制放到后面。(要么加终止符,要么传入长度) 先对主串建sam,然后跑拓扑,自底向上更新cntcntcnt(topsam[]topsam[]topsam[]),然后求LCSLCSLCS。 如果长度大于等于lll,跳fafafa指针到长度为lll的节点 while (...原创 2020-04-01 19:13:28 · 162 阅读 · 0 评论 -
CodeForces 123D String (后缀自动机)
题意:求字符串的所有不同子串的贡献和,子串的贡献为(1+n)/2(1+n)/2(1+n)/2,nnn为子串的个数。 题解:后缀自动机 (sa也可,用单调栈,插个眼后面补 跑拓扑建立topsam,自底向上更新。 num[]num[]num[]:sam中一个状态(topsam[i]topsam[i]topsam[i])所表示的子串出现次数。 状态所表示个数:(p->fa->len,p-&g...原创 2020-03-28 23:14:36 · 201 阅读 · 0 评论 -
HDU 4622 Reincarnation (后缀数组|后缀自动机)
题意:给出区间,询问区间里不同子串个数。 题解:后缀自动机或者后缀数组 参考求解整个字符串的做法。 用kuangbin的话简单介绍一下SAM 从起点到每个点的不同路径,就是不同的子串。 到每一个点,不同路径,其实就是以这个点为最后一个字符的后缀,长度是介于(p->fa->len,p->len]之间的,个数也就清楚了。 而且这个其实是动态变化的,每加入一个字符,就可以知道新加了几...原创 2020-03-28 19:46:25 · 177 阅读 · 0 评论