关闭

动物园

题目大意两个字符串a和b,从a中选取一个非空子串,从b中选取一个非空子串,然后拼起来变成回文串,求这个回文串最大长度。SAM先做一遍manacher处理出从某个串某个位置出发最长回文串。 先把b反过来。 然后你注意到这个回文串一定可以表示成c+S+c,其中S是一个回文串,然后c是a或b中选出的子串。 我的做法是把a和b一起丢去做广义SAM,然后计算每个节点是否同时出现在两个串中,并维护righ...
阅读(108) 评论(0)

[bzoj4755][JSOI2016]扭动的回文串

题目大意给定两个长度为n的字符串A和B。 扭动的回文串定义为a[i..j]与b[j..k]相接成的字符串为回文串或者a、b的一个回文子串。随便搞搞对a、b分别做一次manacher。 然后我们只需要考虑相接的扭动回文串。 枚举a中一个回文中心,即最后扭动回文串的回文中心,有一个结论最优一定是延伸到最长(即延伸到[l,r]使得[l,r]是最长以当前回文中心为回文中心的回文串)。 接着只需要看a...
阅读(774) 评论(0)

[bzoj2565]最长双回文子串

题目大意给定字符串求其最长双回文子串,双回文子串的定义是该串可以分成两个串它们都是回文串。题解详见GDKOI2016的项链 我直接超标了(不知所措#include #include #include #define fo(i,a,b) for(i=a;i=b;i--)...
阅读(201) 评论(0)

[GDKOI2016]项链

题目大意对于一个项链,每个珠子上都有字符。删去最少的一段后,使得剩余项链对称(对对称意义不明可参见GDKOI2015 DAY1 T1)manacher+数据结构复制一份原串。 那么显然删除后的串可以对应到新串的一段。 对新串做一次manacher,那么对于两个回文中心i和j,如果j-i=j-f[j],那么可以组成一个j-i长度的对称项链。对于这个用各种数据结构维护即可。#...
阅读(237) 评论(0)

神族文字

题目大意在长度为n的字符串中找一个最长的连续子串,使其为回文串。 n<=5*10^5。M开头的算法manacher裸题。 我们在字符之间以及头尾加入’$’,并在最前和最后加入’&’(这是用来防止越界的)。 设f[i]为新字符串中第i个字符为中心,i-f[i]..i+f[i]这个部分是一个回文串,且f[i]最大。 我们设一个j,使当前j+f[j]最大。 当一个i<=j+f[j]时,我们容易通...
阅读(357) 评论(0)
    个人资料
    • 访问:252663次
    • 积分:10115
    • 等级:
    • 排名:第1811名
    • 原创:743篇
    • 转载:4篇
    • 译文:0篇
    • 评论:191条
    最新评论
    文章分类