后缀自动机/树/数组
beginendzrq
主要负责给各位大佬端茶送水...
展开
-
spoj LCS 【后缀自动机】
琦不会后缀自动机…… 是以前太浪了…… 所以所有东西都留到了noi前来学…… 马上狗牌退役了TAT(心塞qwq题目大意:给出两个串A,B,求A、B的最长公共子串对A建后缀自动机,然后用B去匹配,若能匹配上就转移到儿子,否则沿着parent树向上跳#include <iostream> #include <algorithm> #include <cstring> #include <cstdi原创 2016-07-13 19:58:41 · 995 阅读 · 0 评论 -
spoj LCS2 【后缀自动机】
好舍不得大家……心疼……题目大意:把上一题的两个串改成多个串对每一个串进行一次操作,记得把每个点的值传给自己的par 最后取个min就好了#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #define N 200005 #define INF 1000000000 using namespa原创 2016-07-14 16:17:56 · 443 阅读 · 0 评论 -
spoj Substrings【后缀自动机】
题目大意:求一个串里面长度分别为 1 ~ n 的子串中出现次数最多的次数考虑每个点代表的字符串出现的次数为它right集合的大小,right集合大小可以遍历子树得到,用每个点的right集合大小去更新他 mx 的答案#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #define N 50000原创 2016-07-14 18:40:54 · 405 阅读 · 0 评论 -
poj 1743 Musical Theme【后缀自动机】
题目大意:给定一个串,求最长的两个子串,满足互不相交且一个串可以通过整体加上另一个数变成另一个串先差分,然后就是找两个相同的不相交的串,考虑对于每个点,记录它的right集的最值,差值就是子串长度。取个max就好#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> #define N 40005 #原创 2016-07-14 23:35:32 · 556 阅读 · 0 评论 -
bzoj 4566 找相同字符【后缀自动机】
好不容易喜欢和大家一起吃饭TAT……难过…… 题目大意:从A、B中各取出一个子串,求有多少种方案,使得两子串相同(不同位置的串算多次)对A建后缀自动机,用B去匹配,若一个点被匹配到了,则他所有祖先全都能走到,每个点的贡献是|S| * (mx[i] - mn[i] + 1)#include <iostream> #include <cstdio> #include <cstring> #define原创 2016-07-15 18:28:06 · 414 阅读 · 0 评论