数据结构-----Manacher
柒月 流火
菜
展开
-
Manacher 模板 求字符串中的最长回文串的长度
求输入的每一个字符串中的最长回文串的长度 1032 : 最长回文子串 最长子串的长度是半径减1,起始位置是中间位置减去半径再除以2。 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef lo...原创 2019-02-04 14:46:36 · 140 阅读 · 0 评论 -
hdu 3613 Best Reward manacher算法
hdu 3613 Best Reward 题意: 给你26个字母的价值 和 一个字符串,将字符串分成两份,是回文串的那一份的价值是这份串所有字母价值的和,不是回文串的那份价值为0,输出最大价值 思路: 用manacher算法求出回文串的长度 和 枚举切割每一个点,检查得到的两个子串是否是回文串,再求出字符串的前缀和。 最后遍历一遍,将每一个切割点所对应的价值求出,输出最大值 输入的字...原创 2019-02-05 19:39:26 · 192 阅读 · 0 评论 -
HDU - 4513 吉哥系列故事――完美队形II Manacher 算法
HDU - 4513 吉哥系列故事――完美队形II 思路: 本题与求最长回文串的题一样,只是多加了一个条件 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn=100010;...原创 2019-02-05 21:57:03 · 147 阅读 · 0 评论 -
HDU - 3294 Girls' research Manacher算法 子串的起点终点公式
HDU - 3294 Girls' research 题意: 给定一个字母,这个字母对应着真正的 a ,将字符串变为他所对应的字符串,求出这个字符串的最长回文串的起点和终点,并输出这个回文串 思路: 最长子串的长度是半径减1,起始位置是中间位置减去半径再除以2。 Manacher算法+公式,新串中的位置 i ,对应原始串的( (i-len[i])/2 , (i+len[i])/2-2 ...原创 2019-02-06 19:36:28 · 218 阅读 · 0 评论