ACM_Manacher
文章平均质量分 80
Gatevin
这个作者很懒,什么都没留下…
展开
-
HDU 4426 (ZOJ 3661) Palindromic Substring 后缀数组二分 + Manacher + Hash
题目大意:就是现在对于T(T 大致思路:首先用Manacher算法处理出各个字符为中心的回文半径, 然后由于一个长度为n的字符串中最多只有O(n)个不同的回文串(其实位置不同但序列相同视为相同), 所以可以再利用mx的右移来判断是否可能出现的新的回文串 ( mx 参照2014年国家集训队徐毅论文中Manacher的做法), 对于每一种回文串Hash判重即可然后对于每一种回文原创 2015-03-27 09:23:35 · 1162 阅读 · 0 评论 -
HDU 5371 Hotaru's problem Manacher + set维护
题目大意:就是现在给出一个长度为N 大致思路:很常见的一个Manacher + Set维护的类型的题....首先用Manacher处理出每个位置为中心的回文半径然后从左往右扫, 每次对于当前位置 i, 其半径覆盖到的最右位置 (i, i + R[i] - 1)添加到set里(作为左中心)那么对于位置i, 要使其作为右中心的话, 左中心的最右覆盖位置必须能覆盖到这个位原创 2015-08-11 19:32:59 · 624 阅读 · 0 评论 -
Codeforces 30E Tricky and Clever Password Manacher + KMP + 前缀和
题目大意:就是现在有一个长度为奇数的个回文串串T被加密成了 A + prefix + B + middle + C + suffix的形式, 其中 T = prefix + middle + suffix , 这六个部分可以是空的, 现在对于给出的加密后的串求原串T的最大可能长度, 其中middle长度也是奇数, preifx长度和suffix长度相等, 输入的字符串长度大致思路:原创 2015-03-29 12:19:55 · 2254 阅读 · 1 评论 -
HDU 5157 Harry and magic string (BestCoder Round #25 D) Manacher(或 Palindromic Tree) + 前缀和
题目大意:就是现在给出一个字符串s, 长度不超过 10^5, 然后求出其中不相交的回文字串的对数大致思路:其实一眼看去就知道可以用Manacher处理出回文半径之后用前缀和解决 不过有想了一下Palindromic Tree的做法, 算是练习一下Palindromic Tree了解法一:Manacher处理出所有位置的回文半径然后计算以i位置结尾的回文串数量和以原创 2015-03-31 10:54:47 · 786 阅读 · 0 评论 -
BZOJ 2342 [Shoi2011] 双倍回文 Manacher + set维护
题目大意:就是现在给出一个长度为n的字符串(1 大致思路:首先用manacher处理处所有字符为中心的回文半径, 然后用set维护对于每个正中心的位置查询左中心的位置即可 (论文题)细节写在代码注释里了代码如下:Result : Accepted Memory : 18264 KB Time : 748 ms/********原创 2015-03-24 10:53:38 · 1040 阅读 · 0 评论 -
Codeforces Gym 100548G The Problem to Slow Down You (Palindromic Tree 或 Hash水过) 2014西安现场赛G题
题目大意:就是现在给你两个长度不超过20W的字符串, 都只包含小写字母, 求相同的回文串对数 (S, T), 其中S == T, S来自第一个字符串, T来自第二个字符串, S和T都是回文串大致思路:首先很容易想到的是Manacher + 后缀数组二分 + Hash的做法, 复杂度O(nlogn), 可惜的是这个题目Hash容易被卡试了好几次Hash之后试了一发二次Hash原创 2015-03-31 18:17:44 · 2436 阅读 · 0 评论 -
Codeforces 17E Palisection Manacher ( 或 Panlindromic Tree ) + 前缀和
题目大意:就是现在给出一个长度为n的字符串( 1 大致思路:继续刷manacher的论文题... 刚开始看到这个题的时候我想的是觉得可以正面做, 然后发现逗比了...因为我对于每一个以 i 位置为中心的半径为R[i]回文串只算了一次, 错以为可以树状数组弄一下...然后逗比地美国样例之后发现, 以 i 为中心的回文串有R[i]个( i 处不是 '#' 的情形下)...然后看原创 2015-03-20 20:41:37 · 1406 阅读 · 0 评论 -
(CDOJ) UESTC 606 Palindrome Again 后缀数组二分 + Manacher + Hash
题目大意:就是现在给出两个只包含小写字母的字符串A, B, 一个正整数d, 求三元组(i, j, k)满足A[i, i + 1, .... i + k - 1] == B[j, j + 1, ... j + k - 1] , 且A[i, i + 1, ..., i + k - 1]是回文串, k >= d的三元组数量大致思路:做了2012长春那场区域赛的G题之后就会做这题了..原创 2015-03-29 21:42:31 · 843 阅读 · 0 评论 -
BZOJ 2565 最长双回文串 Manacher
题目大意:定义双回文串G是指一个可以被拆分成两个部分(S和T)的字符串G = S + T, 且S和T都是回文串的串, G自己本身可以不是回文串给出一个长度为n ( 2 大致思路:首先可以相当manacher算法当中有这样一个过程, 用两个辅助变量mx和p分别表示已有回文半径覆盖到的最右边界和对应中心的位置, 然后在求解过程中更新mx和p, 考虑到S和T的中间字符作为分隔的位原创 2015-03-20 22:03:48 · 2046 阅读 · 0 评论 -
BZOJ 2160 拉拉队排练 Manacher + 前缀和
题目大意:就是现在给出一个长度为 n 的字符串(1 对于给出的长度为n的字符串如果其回文串的数量比K少则输出-1, 否则输出所有回文串中长度为奇数的最长的前K个回文串的长度的乘积, 结果对于19930726取模输出大致思路:首先可以用manacher算法确定每个位置的回文半径, 由于这里只需要长度是奇数, 所以不需要再原来的字符串的相邻两个字符之间插入未出现的字符, 直接在原创 2015-03-20 18:53:16 · 1570 阅读 · 0 评论 -
URAL 1297 Palindrome 后缀数组 或 Manacher 求最长回文子串
题目大意:就是给出一个长度不超过1000个只包含大小写英文字母的字符串,输出其最长回文子串大致思路:首先很容易想到用将该字符串本身反转之后与自己连接起来, 中间用一个未出现的字符隔开, 求出后缀数组刚开始想的是枚举回文串长度,但是发现不能二分判断改长度是否就满足题意, 于是想到一个枚举起点和长度利用RMQ查询和对称性判断的O(n*n)的方法不过这样并不是最好的枚举方法原创 2015-02-09 19:44:32 · 723 阅读 · 0 评论 -
UVALive 4975 (LA 4975) Casting Spells Manacher + Set维护
题目大意:就是对于一个串, 长度不超过3*10^5, 询问其中最长的形似是ww^ww^类型的串, 其中w^是w反转得到的串大致思路:好早以前写的题了....当时交UVALive一直返回WA一直找不到错哪里了...现在回去看发现Rejudge成AC了....就是先Manacher处理出每个位置的回文半径从左至右扫一遍用set维护当前能覆盖到的右界, 然后枚举后半的ww^的原创 2015-08-11 19:55:31 · 784 阅读 · 0 评论