题意:给你一个字符和一个字符串让你求出最长回文子串并且输出来,答案需要根据给出的字符转换一下,就是将给出的字符认定为a,然后依次向后推;

解题思路:manacher模板+一些处理

代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<Cstdio>
using namespace std;
char s[200500],a[400500];
char t[30],m;
int p[400500];
int n;
int pos;
int change()
{
int i,j,t;
a[0]='$';
a[1]='#';
j=2;
for(i=0;i<n;i++)
{
a[j++]=s[i];
a[j++]='#';
}
a[j]='\0';
return j;
}
int manacher()
{
int len=change();
int maxlen=-1;
int id;
int mx=0;
for(int i=1;i<len;i++)
{
if(i<mx)
p[i]=min(p[id*2-i],mx-i);
else
p[i]=1;
while(a[i-p[i]]==a[i+p[i]])
p[i]++;
if(mx<p[i]+i)
{
mx=p[i]+i;
id=i;
}
if(maxlen<p[i]-1)
{
maxlen=p[i]-1;
pos=i;
}
}
return maxlen;
}
int main()
{
int x,y;
//ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
t[0]='z';t[1]='a';
for(int i=2;i<=25;i++)
t[i]=t[i-1]+1;
while(scanf("%c %s",&m,s)!=EOF)
{
getchar();
n=strlen(s);
int ans=manacher();
x=(pos-ans+1)/2-1;y=(ans+pos-1)/2-1;
if(ans<=1)
{
printf("No solution!\n");
}
else
{
printf("%d %d\n",x,y);
for(int i=x;i<=y;i++)
{
int xx=s[i]-m;
xx++;
xx=xx+26;xx=xx%26;
printf("%c",t[xx]);
}
printf("\n");
}
}
}

  

hdu-3294(最长回文子串)的更多相关文章

  1. hdu 3068 最长回文子串 TLE

    后缀数组+RMQ是O(nlogn)的,会TLE..... 标准解法好像是马拉车,O(n).... #include "algorithm" #include "cstdi ...

  2. hdu 3068 最长回文子串 马拉车模板

    前几天用后缀数组写过一次这题,毫无疑问很感人的TLE了-_-|| 今天偶然发现了马拉车模板,O(N)时间就搞定 reference:http://acm.uestc.edu.cn/bbs/read.p ...

  3. HDU 3068 [最长回文子串]

    #include<iostream> #include<string> #include<string.h> #include<algorithm> # ...

  4. 最长回文子串(百度笔试题和hdu 3068)

    版权所有.所有权利保留. 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/17123559 求一个字符串的最长回文子串.注 ...

  5. hdu 3068 最长回文(manachar求最长回文子串)

    题目连接:hdu 3068 最长回文 解题思路:通过manachar算法求最长回文子串,如果用遍历的话绝对超时. #include <stdio.h> #include <strin ...

  6. HDU 3068 最长回文 【最长回文子串】

    和上一题一样,不过这题只是要求最长回文子串的长度 在此采用了非常好用的Manacher算法 据说还是O(n) 的效率QAQ 详细用法参考了上篇博客的参考资料,这两天有空学习一下~ Source cod ...

  7. HDU 4745 Two Rabbits (2013杭州网络赛1008,最长回文子串)

    Two Rabbits Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Tota ...

  8. Manacher模板( 线性求最长回文子串 )

    模板 #include<stdio.h> #include<string.h> #include<algorithm> #include<map> us ...

  9. 【转】最长回文子串的O(n)的Manacher算法

    Manacher算法 首先:大家都知道什么叫回文串吧,这个算法要解决的就是一个字符串中最长的回文子串有多长.这个算法可以在O(n)的时间复杂度内既线性时间复杂度的情况下,求出以每个字符为中心的最长回文 ...

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

    回文字符串,想必大家不会不熟悉吧? 回文串会求的吧?暴力一遍O(n^2)很简单,但当字符长度很长时便会TLE,简单,hash+二分搞定,其复杂度约为O(nlogn), 而Manacher算法能够在线性 ...

随机推荐

  1. 【php增删改查实例】第二十五节 - 在main.php中显示头像

    在用户成功上传头像以后,用户登录系统,应该能够看到自己的头像,本节演示如何在这个地方: 添加用户头像. 1.用DIV做: border-radius:50% background:url(xxx.jp ...

  2. 深入理解JAVA虚拟机(内存模型+GC算法+JVM调优)

    目录 1.Java虚拟机内存模型 1.1 程序计数器 1.2 Java虚拟机栈 局部变量 1.3 本地方法栈 1.4 Java堆 1.5 方法区(永久区.元空间) 附图 2.JVM内存分配参数 2.1 ...

  3. python3 pip 安装Scrapy在win10 安装报错error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

    问题描述 当前环境win10,python_3.6.1,64位. 在windows下,在dos中运行pip install Scrapy报错: building 'twisted.test.raise ...

  4. Jury Meeting CodeForces - 854D (前缀和维护)

    Country of Metropolia is holding Olympiad of Metrpolises soon. It mean that all jury members of the ...

  5. scrapy框架爬取妹子图片

    首先,建立一个项目#可在github账户下载完整代码:https://github.com/connordb/scrapy-jiandan2 scrapy startproject jiandan2 ...

  6. PS滤镜制作下雨照片特效

    原图 一.打开你想要添加下雨效果的照片,并新建一个图层,命名为雨,填充为黑色,对“雨”层执行:滤镜 > 杂色> 添加杂色,参数如图. 二.对“雨”层执行:滤镜 > 模糊 > 高 ...

  7. oc之证书

    https://www.cnblogs.com/MrJalen/p/6813309.html iOS推送证书生成pem文件(详细步骤)   1.pem文件概述 pem文件是服务器向苹果服务器做推送时候 ...

  8. Python之拆分目录

    成分目录的好习惯,使得代码保持整洁,为以后的代码管理提供方便. 一.概念 一般目录有以下几个: bin:程序入口,存放start文件. conf:存放固定的配置信息,比如:连接redis的配置信息.连 ...

  9. ios点击输入框,界面放大解决方案

    当我们编写的input宽度没有占满屏幕宽度,而且又没有申明meta,就会出现点击输入框,界面放大这个问题. 下面我直接给出解决方案: <meta name="viewport" ...

  10. [转帖]SAP S/4 HANA与SAP Business Suite/R3(ECC)的区别

    SAP S/4 HANA与SAP Business Suite/R3(ECC)的区别 https://blog.csdn.net/zhongguomao/article/details/5351520 ...