hdu 4513 吉哥系列故事——完美队形II
2013-08-31 23:14
435 查看
hdu 4513 吉哥系列故事——完美队形II
题目给出的整数哦, 不过也完全可以通过manacher算法来实现查找最长的回文哦.
这个道题比平常的回文长度的题目加多一个判断而已啦.
#include <stdio.h>
#include <string.h>
#define MAX 100005
#define min(a, b) (a > b ? b : a)
int q[MAX], newQ[MAX*2];
int p[MAX*2];
int main() {
int T, n, m;
int mx, maxLen, id;
int i, z;
int a, b;
while (scanf("%d", &T) != EOF) {
while (T--) {
memset(newQ, 0, sizeof(newQ));
scanf("%d", &n);
for (i = 1; i <= n; i++) {
scanf("%d", &q[i]);
}
m = 2*n;
newQ[0] = -1, newQ[1] = 0;
for (i = 1; i <= n; i++) {
newQ[i*2] = q[i];
newQ[i*2 + 1] = 0;
}
mx = maxLen = id = 0;
for (i = 1; i <= m; i++) {
if (mx > i) {
p[i] = min(p[id*2 - i], mx - i);
} else {
p[i] = 1;
}
while (newQ[i - p[i]] == newQ[i + p[i]]) {
if (newQ[i + p[i]] == 0) {
p[i]++;
} else {
a = i - p[i];
b = i + p[i];
if (newQ[a] <= newQ[a + 2] && newQ[b - 2] >= newQ[b]) {
p[i]++;
continue ;
}
break ;
}
}
if (p[i] + i > mx) {
mx = p[i] + i;
id = i;
}
if (maxLen < p[i]) {
maxLen = p[i];
}
}
printf("%d\n", maxLen - 1);
}
}
return 0;
}
题目给出的整数哦, 不过也完全可以通过manacher算法来实现查找最长的回文哦.
这个道题比平常的回文长度的题目加多一个判断而已啦.
#include <stdio.h>
#include <string.h>
#define MAX 100005
#define min(a, b) (a > b ? b : a)
int q[MAX], newQ[MAX*2];
int p[MAX*2];
int main() {
int T, n, m;
int mx, maxLen, id;
int i, z;
int a, b;
while (scanf("%d", &T) != EOF) {
while (T--) {
memset(newQ, 0, sizeof(newQ));
scanf("%d", &n);
for (i = 1; i <= n; i++) {
scanf("%d", &q[i]);
}
m = 2*n;
newQ[0] = -1, newQ[1] = 0;
for (i = 1; i <= n; i++) {
newQ[i*2] = q[i];
newQ[i*2 + 1] = 0;
}
mx = maxLen = id = 0;
for (i = 1; i <= m; i++) {
if (mx > i) {
p[i] = min(p[id*2 - i], mx - i);
} else {
p[i] = 1;
}
while (newQ[i - p[i]] == newQ[i + p[i]]) {
if (newQ[i + p[i]] == 0) {
p[i]++;
} else {
a = i - p[i];
b = i + p[i];
if (newQ[a] <= newQ[a + 2] && newQ[b - 2] >= newQ[b]) {
p[i]++;
continue ;
}
break ;
}
}
if (p[i] + i > mx) {
mx = p[i] + i;
id = i;
}
if (maxLen < p[i]) {
maxLen = p[i];
}
}
printf("%d\n", maxLen - 1);
}
}
return 0;
}
相关文章推荐
- HDU 4513 吉哥系列故事――完美队形II(Manacher)
- HDU - 4513 吉哥系列故事――完美队形II(manacher)
- HDU 4513 吉哥系列故事――完美队形II(manacher)
- hdu 4513 吉哥系列故事——完美队形II
- HDU 4513 吉哥系列故事——完美队形II(manacher模板)
- hdu 4513 吉哥系列故事——完美队形II ( manacher+dp )
- HDU - 4513 吉哥系列故事――完美队形II(manacher)
- hdu 4513 吉哥系列故事——完美队形II(manacher)
- HDU 4513 吉哥系列故事——完美队形II(Manacher算法最大回文长度 && 两侧沿中点递减)
- hdu 4513 吉哥系列故事——完美队形II -- (最长回文字串 )
- HDU - 4513 吉哥系列故事——完美队形II
- HDU 4513 吉哥系列故事――完美队形II
- HDU 4513 吉哥系列故事——完美队形II(Manacher)
- HDU 4513 吉哥系列故事——完美队形II(Manacher)
- hdu 4513 吉哥系列故事——完美队形II
- HDU 4513 吉哥系列故事――完美队形II
- HDU 4513 吉哥系列故事――完美队形II(Manacher)
- Hdu 4513 吉哥系列故事——完美队形II (manacher变形)
- hdu 4513 吉哥系列故事——完美队形II(拓展KMP算法)
- hdu 4513 吉哥系列故事――完美队形II(Manacher算法求回文串长度)