Manacher
文章平均质量分 54
hcx11333
菜鸡一枚,成长ing。。。
展开
-
HDU3068 最长回文(manacher)
题意:最长回文。 思路:manacher算法。 #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const int inf = 0x3f3f3f3f; const int mod = 1000000原创 2017-08-18 16:32:56 · 204 阅读 · 0 评论 -
HDU3294 Girls' research(Manacher算法)
题意:给一个字母ch和一个只包含小写字母的串,用字母'a'代替串中出现的ch,用字母'b'代替字母表中ch后面的一个字母,'c'代替ch后面第二个字母,以此类推。。。相当于在原串的基础上做一个映射。求出最长回文串的起点和终点,如果最长回文串长度小2就输出无解。如果有多解就输出第一个。 思路:先把串按题目说的搞一下,然后Manacher即可。 #include #include原创 2017-08-18 16:40:35 · 210 阅读 · 0 评论 -
HDU4513 吉哥系列故事——完美队形II(manacher)
题意:中文题面。 思路:题目要求队列最长,要对称,还要连续,这不就是最长回文串嘛!还需要从左到中间非递减,只需要在manacher推进的时候多一个条件就行了。 #include #include #include #include #include #include #include #include using namespace std; typedef long long原创 2017-08-18 21:39:12 · 221 阅读 · 0 评论 -
UVA11475 Extend to Palindrome(扩展KMP/Manacher/后缀数组)
题意:给一个长度最大100000的字母串,可在它后面任意补充字符,输出可以构成的最短回文串。 思路:补充的部分要与前面形成回文,要求出来最少的情况,显然我们要先求出原串的后缀能够形成的最大回文串,然后补充剩下的前缀部分的对称串即可。最好的情况就是原串回文,不需要补充,最坏的情况是以最后一个字母为对称中心,要补充n-1个字母。 求最大的回文后缀,有几种方法: Manacher: 在串上跑一次...原创 2018-10-19 13:27:04 · 289 阅读 · 0 评论 -
HDU5785 Interesting(manacher+差分数组)
题意:一个串s,如果存在1<=i<=j<k<=|s|,且s[i,..j]和s[j+1,..k]都是回文串,那么对结果的贡献就是i*k。求所有贡献之和。 思路:对于每个位置i,设以i为末尾的回文串的起点分别为s1,s2,...,以i+1为起点的回文串的终点位置分别为t1,t2,....,那么i位置对结果的贡献=s1 * t1 + s1 * t2 +...+ s2 * ...原创 2018-10-30 20:23:13 · 295 阅读 · 0 评论