随笔分类 - 8字符串
摘要:原理 给自动机上的每个点定义两种属性:[min,max]和right集合,这个点表示(长度在[min,max]的、所有出现位置的右端点的集合为right的子串) 然后可以证明,两个节点的right集合要么不相交,要么互相包含 于是,让right直接包含(某个点的right)的点作为它的父亲,可以得到
阅读全文
摘要:用途 求回文子串 做法 先考虑回文子串以某字符为中心的情况,即长度为奇数 推着做,记rad[i]为以i位置为中心的最大半径(包含中点) 考虑怎么求rad[i]。找之前的一个右端点最靠右的位置p,设它的中心是j 如果有i<p,那么找到i关于j的对称点2*j-i,那么一定$rad[i]>=min\{ra
阅读全文
摘要:原理 定义rank[i]表示suffix[i]在所有后缀中的字典序排名;sa[i]表示字典序排名为i的后缀是suffix[sa[i]] 定义height[i]表示排名为i的后缀和排名为i-1的后缀的LCP(最长公共前缀) 可以证明,$height[rank[i]]>=height[rank[i-1]
阅读全文

浙公网安备 33010602011771号