zoukankan      html  css  js  c++  java
  • Gym101237C The Palindrome Extraction Manacher

    题意

    给定字符串(S),分段(S=A+B+C+D+E)(A,B,C,D,E)可以为空串。要求方案(B+D)为回文串,且(|B+D|)最大

    做法

    假设(|B|>|D|),则(B=rev(D)+T)(T)为某回文串
    跑manacher,对于一组([l,i,r]),就是找(S_{1,l-1})的一组最长后缀使得其在(S_{r+1,n})作为子串出现

    具体做法就是对于(rev(S))就SAM,然后(S)的每个前缀在上面定位,对于([l,i,r]),令(pre_{l-1})为在后缀树上的定位,然后一直往上爬直到走到原来的(S_{r+1,n})内部

    题外话

    好久没写SAM了,复习一下,看懂了多一点原理

  • 相关阅读:
    数据结构与算法的思维导图
    第九周知识总结
    第八周知识总结
    作业七:问卷调查

    图的基本概念及基本术语
    二叉树

    队列

  • 原文地址:https://www.cnblogs.com/Grice/p/12819462.html
Copyright © 2011-2022 走看看