题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3294

给出一个字符串和加密的字符规律

例如 c abcba

c代表把串中的c改成a,d改成b... b改成z,a改成y...

即上串是yzazy,然后求出它的最长回文子串, 并记录子串的开始下标和结束下标就行了;

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int N = 4e5+; int p[N], id, mx, ans, Index;
char s[N], ch[], s0[N]; void Manacher(char s[], int n)
{
id = mx = ans = ;
for(int i=; i<n; i++)
{
if(mx>i)
p[i] = min(p[id*-i], mx-i);
else
p[i] = ;
while(s[i-p[i]] == s[i+p[i]])
p[i]++;
if(p[i]+i>mx)
{
mx = p[i]+i;
id = i;
}
if(p[i]>ans)
{
ans = p[i];
Index = i;///记录结果的中心下标;
}
}
} int main()
{
while(scanf("%s%s", ch, s)!=EOF)
{
int len = strlen(s);
int k = ch[]-'a';
for(int i=; i<len; i++)///转化成真正的串s;
{
if(s[i]-k<'a')
s[i]=s[i]-k+;
else
s[i]=s[i]-k;
}
///printf("%s\n", s);
for(int i=len; i>=; i--)
{
s[i+i+] = s[i];
s[i+i+] = '#';
}
s[] = '$';
Manacher(s, *len+);
ans = ans-;
k = ans/;///前面或后面有几个字母在回文串中;
if(k == )
{
printf("No solution!\n");
continue;
}
int L = Index-ans+;
int R = Index+ans-;
printf("%d %d\n", (L-)/, (R-)/);
for(int i=L; i<=R; i++)
if(s[i]!='#')
printf("%c", s[i]);
printf("\n");
}
return ;
}

Girls' research---hdu3294(回文子串manacher)的更多相关文章

  1. 九度OJ 1528 最长回文子串 -- Manacher算法

    题目地址:http://ac.jobdu.com/problem.php?pid=1528 题目描述: 回文串就是一个正读和反读都一样的字符串,比如"level"或者"n ...

  2. 最长回文子串——manacher

    最长回文子串--Manacher 算法 (原版的博主的代码都是用py写的,这里改成c++) c++ 算法 字符串处理 0. 问题定义 最长回文子串问题:给定一个字符串,求它的最长回文子串长度. 如果一 ...

  3. lintcode最长回文子串(Manacher算法)

    题目来自lintcode, 链接:http://www.lintcode.com/zh-cn/problem/longest-palindromic-substring/ 最长回文子串 给出一个字符串 ...

  4. 最长回文子串Manacher算法模板

    Manacher算法能够在O(N)的时间复杂度内得到一个字符串以任意位置为中心的回文子串.其算法的基本原理就是利用已知回文串的左半部分来推导右半部分. 首先,在字符串s中,用rad[i]表示第i个字符 ...

  5. 最长回文子串—Manacher 算法 及 python实现

    最长回文子串问题:给定一个字符串,求它的最长回文子串长度.如果一个字符串正着读和反着读是一样的,那它就是回文串.   给定一个字符串,求它最长的回文子串长度,例如输入字符串'35534321',它的最 ...

  6. hihocoder #1032 : 最长回文子串 Manacher算法

    题目链接: https://hihocoder.com/problemset/problem/1032?sid=868170 最长回文子串 时间限制:1000ms内存限制:64MB 问题描述 小Hi和 ...

  7. 5. Longest Palindromic Substring(最长回文子串 manacher 算法/ DP动态规划)

    Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...

  8. HiHo 1032 最长回文子串 (Manacher算法求解)

    /** * 求解最长回文字串,Manacher算法o(n)求解最长回文子串问题 **/ #include<cstdio> #include<cstdlib> #include& ...

  9. hihoCoder hiho一下 第一周 #1032 : 最长回文子串 (Manacher)

    题意:给一个字符串,求最长回文子串的长度. 思路: (1)暴力穷举.O(n^3) -----绝对不行. 穷举所有可能的出现子串O(n^2),再判断是否回文O(n).就是O(n*n*n)了. (2)记录 ...

随机推荐

  1. python跳一跳辅助学习

    微信跳一跳辅助工具 准备工具 adb驱动 安卓手机 打开手机的调试模式 usb接好手机和电脑 PyCharm:全宇宙唯一一款专门用于Python开发IDE工具 实现原理: 获取手机的实时的截图 点击起 ...

  2. 基于Redis实现延时队列服务

    背景 在业务发展过程中,会出现一些需要延时处理的场景,比如: a.订单下单之后超过30分钟用户未支付,需要取消订单 b.订单一些评论,如果48h用户未对商家评论,系统会自动产生一条默认评论 c.点我达 ...

  3. 安装expect命令 两种方式

    yum安装 yum -y install expect 手动安装 expect以及tcl版本 #!/bin/bash oldpath=`pwd` tar -zxf tcl8.4.20-src.tar. ...

  4. Spider Studio 界面功能布局

    SS是Spider Studio (采集工作站) 的简称, 这是由GDT团队开发的一款互联网数据采集开发工具. 它以浏览器为基础, 运用JQuery技术, 结合脚本化C#的强大功能, 能够轻松解决各类 ...

  5. iOS开发小技巧--键盘处理以及解决block造成循环引用的小技巧

  6. Web项目开发规范文档

    http://www.kancloud.cn/chandler/css-code-guide/51267

  7. 以下web.xml片断( )正确地声明servlet 上下文参数。

    A <init-param> <param-name>MAX</param-name> <param-value>100</param-value ...

  8. 【BZOJ】1677: [Usaco2005 Jan]Sumsets 求和(dp/规律)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1677 完全背包很容易想到,将1,2,4...等作为物品容量即可. 然后这题还有一个递推式 f[i]= ...

  9. 解决同一页面jQuery多个版本或和其他js库冲突方法

    <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  10. Qualcomm Vuforia SDK背景

    参考视频:http://edu.csdn.net/course/detail/1467/23125?auto_start=1 一:概述 官网:www.vuforia.com 应用方向:产品交互.虚拟购 ...