首先我们要考虑给定一个串,如何将他划分,使得他有最多的禁忌串 我们只需要按里面出现的禁忌串们的出现的右端点排序然后贪心就可以啦 我们建出AC自动机,在AC自动机等价于走到一个包含禁忌串的节点就划分出一段 那么不妨设f(i,j)表示走了i步当前在AC自动机的j节点上 这样的DP方程跟BZOJ 1030是类似的 但是由于i可能会很大,但是j是很小的,又因为每一步的转移都是一样的 所以我们可以考虑矩阵乘法来优化DP 可是当我们用AC自动机构建了转移矩阵之后,我们会发现我们没办法算答案 我们只能算经过L…