摘要: 我们预处理出来以i为结尾的最长回文后缀(回文自动机的构建过程中就可以求出)然后就是一个区间覆盖,因为我懒得写贪心,就写了线段树优化的DP。 cpp include include include include include using namespace std; const int N=101 阅读全文
posted @ 2019-01-06 20:41 Xu-daxia 阅读(193) 评论(0) 推荐(0)
摘要: 给你一个串S以及一个字符串数组T[1..m],q次询问,每次问S的子串S[pl..pr]在T[l..r]中的哪个串里的出现次数最多,并输出出现次数。 如有多解输出最靠前的那一个。 我们首先对m个字符串数组建出后缀自动机,然后我们可以通过跳trans边找到S前i个字符代表的前缀的最长后缀。我们要找的是 阅读全文
posted @ 2019-01-06 18:32 Xu-daxia 阅读(254) 评论(0) 推荐(0)
摘要: 感觉很水。 因为SAM上一个点的子树大小代表这个点所表示子串的出现次数。 建出广义后缀自动机之后。在$parent$树上跑$DP$,维护$size[i][1]$,和$size[i][0]$代表i的子树中有多少第一个串的结束节点和第二个串的结束节点,然后答案就是$size[i][0] size[i][ 阅读全文
posted @ 2019-01-06 17:54 Xu-daxia 阅读(219) 评论(0) 推荐(0)
摘要: 我们对 作文库 建出广义后缀自动机。考虑用$SAM$处理出来一个数组$mx[i]$,表示从作文的第$i$个位置向左最远在作文库中出现的子串的长度。这个东西可以在$SAM$上跑$trans$边来实现(其实求出来的是作文前i位在作文库中出现的最长后缀)。 处理出来这个东西,我们考虑用$DP$求答案。发现 阅读全文
posted @ 2019-01-06 17:49 Xu-daxia 阅读(141) 评论(0) 推荐(0)