link: https://loj.ac/problem/6287 一开始差点写FFT了23333,并且FFT还能算这样的三元组的数量而且还不用要求这是一个排列。。。。 但这太大材小用了(而且很可能被卡) 记得bzoj上有道类似的,大致的操作就是单点修改和查询当前点到边界的对称子串是否是回文串。。。 ...
分类:
其他好文 时间:
2018-02-26 11:20:23
阅读次数:
175
poj 3280 题意:给定一个字符串和每个字符删去和增加的代价,求使字符串变成回文串操作所需的最小代价。 题解:哇!开心!终于亲自做对了!做完这两题这个就回了。uva10739 uva 10453 ...
分类:
其他好文 时间:
2018-02-25 20:42:17
阅读次数:
222
Uva 10453 题意:给定字符串,问最少插入多少个字符使其变成回文串,并任意输出一种结果。 题解:和Uva 10739类似,这里是只能增加。类似定义dp[i][j]表示子串Si...Sj变为回文串需要插入字符的最小数。当s[i]==s[j]时,dp[i][j]=dp[i+1][j-1];当两者不 ...
分类:
其他好文 时间:
2018-02-25 17:21:05
阅读次数:
164
//3、“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。//请写一个程序判断读入的字符串是否是“回文”。#include<stdio.h>#include<string.h>int main(){ char str[100]; int i, j, len; ...
分类:
其他好文 时间:
2018-02-25 11:16:12
阅读次数:
175
题意:求最长回文子串 这种有专门的O(n)套板子算法,但作为练习还是用后缀数组来解吧 只需把相同的另一个串反接(中间用一个足够小且未出现的字符衔接),然后枚举回文串的中点,不断求解该点往前和往后计算的$LCP$即可 发现模板有个BUG改好了 有个值得注意的地方是回文长度奇偶枚举时的端点选择问题,具体 ...
分类:
编程语言 时间:
2018-02-24 20:50:09
阅读次数:
188
有些时候,后缀自动机并不能解决某些问题,或者解决很麻烦。这时就有各种神奇的字符串算法了。 manacher算法用来O(|S|)地求出字符串S的最长的回文串的长度。这是怎么做到的呢? 并不对劲的暴力选手在刚见到求字符串S的最长的回文串的长度这个问题时,第一反应就是枚举每一个位置为回文串的对称轴,再暴力 ...
分类:
编程语言 时间:
2018-02-24 13:11:02
阅读次数:
187
【CF17E】Palisection(回文树) 题面 "洛谷" 题解 题意: 求有重叠部分的回文子串对的数量 所谓正难则反 求出所有不重叠的即可 求出以一个位置结束的回文串的数量 和以一个位置为开始的回文串的数量 然后对应的乘一下就行了 求法我用的是回文树 维护每个节点到根节点的距离, 就是回文后缀 ...
分类:
其他好文 时间:
2018-02-23 23:57:34
阅读次数:
335
【BZOJ2160】拉拉队排练(回文树) 题面 "BZOJ" 题解 看着题目, 直接构建回文树 求出每个回文串的出现次数 直接按照长度$sort$一下就行了 然后快速幂算一下答案就出来了 这题貌似可以用Manacher做吧 求出以每个字符为中心的回文串的最大长度 然后搞一下前缀和就行了 cpp in ...
分类:
其他好文 时间:
2018-02-23 22:24:33
阅读次数:
164
【SPOJ】NUMOFPAL Number of Palindromes(Manacher,回文树) 题面 "洛谷" 求一个串中包含几个回文串 题解 Manacher傻逼题 只是用回文树写写而已。。 cpp include include include include include includ ...
分类:
其他好文 时间:
2018-02-23 22:18:06
阅读次数:
192
【BZOJ2342】双倍回文(回文树) 题面 "BZOJ" 题解 构建出回文树之后 在$fail$树上进行$dp$ 如果一个点代表的回文串长度为$4$的倍数 并且存在长度为它的一半的回文后缀 那么就是可行的 如何维护长度是一半的回文后缀? $fail$树上的父亲一定包括了它的所有的回文后缀 因此在$ ...
分类:
其他好文 时间:
2018-02-22 22:06:23
阅读次数:
182