[manacher] hdu 3294 Girls' research
题意:
给一个字符x代表真实的a 然后输出的时候转换
然后就是求最长回文子串的串是什么 长度要大于1
思路:
就是裸的manacher,弄清楚下标的转换关系就好了
代码:
#include"cstdlib"
#include"cstdio"
#include"cstring"
#include"cmath"
#include"queue"
#include"algorithm"
#include"map"
#include"vector"
#include"string"
#define inf 0x7fffffff
#include"iostream"
#define ll __int64
using namespace std;
#define N 200005
char a[N],b[N*2];
int rad[N*2];
int main()
{
char x[2];
while(scanf("%s%s",x,&a[1])!=-1)
{
int maxl,maxid,id;
int i,len;
for(i=1; a[i]; i++)
{
b[i*2]=a[i];
b[i*2+1]='#';
}
len=2*i;
b[0]='?';
b[1]='#';
b[len]='\0';
maxid=id=0;
maxl=0;
int ansi;
for(i=1; i<len; i++)
{
if(maxid>i) rad[i]=min(rad[2*id-i],maxid-i);
else rad[i]=1;
while(b[i-rad[i]]==b[i+rad[i]])
{
rad[i]++;
}
if(rad[i]+i>maxid)
{
maxid=rad[i]+i;
id=i;
}
if(rad[i]>maxl)
{
maxl=rad[i];
ansi=i;
}
}
if(maxl-1<2) puts("No solution!");
else
{
int kk=x[0]-'a';
int ans=maxl-1,ansl,ansr;
ansl=(ansi-(ans-1))/2-1;
ansr=ansl+ans-1;
printf("%d %d\n",ansl,ansr);
for(int i=ansl; i<=ansr; i++)
{
if(a[i+1]-kk<'a') printf("%c",'z'+1-'a'+(a[i+1]-kk));
else printf("%c",a[i+1]-kk);
}
puts("");
}
}
return 0;
}
[manacher] hdu 3294 Girls' research的更多相关文章
- hdu 3294 Girls' research
#include<stdio.h> #include<string.h> #define MAX 200020 char s[MAX],ss[MAX*2],str[2]; in ...
- Hdu 3294 Girls' research (manacher 最长回文串)
题目链接: Hdu 3294 Girls' research 题目描述: 给出一串字符串代表暗码,暗码字符是通过明码循环移位得到的,比如给定b,就有b == a,c == b,d == c,.... ...
- hdu 3294 Girls' research(manacher)
Problem Description One day, sailormoon girls are so delighted that they intend to research about pa ...
- HDU 3294 Girls' research(manachar模板题)
Girls' researchTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total ...
- HDU 3294 Girls' research
题目地址 manacher #include<cstdio> #include<string.h> #include<algorithm> using namesp ...
- (回文串 Manacher )Girls' research -- hdu -- 3294
http://acm.hdu.edu.cn/showproblem.php?pid=3294 Girls' research Time Limit:1000MS Memory Limit:32 ...
- Girls' research(马拉车算法) hdu 3294
文章目录 思路如下 Manachar代码注释 题解如下 Problem Description One day, sailormoon girls are so delighted that they ...
- Manacher 算法(hdu 3068 && hdu 3294)
今天打算补前晚 BC 的第二题,发现要用到能在 O(n) 时间求最大回文子串长度的 Manacher 算法,第一次听,于是便去百度了下,看了大半天,总算能看懂了其思想,至于他给出的代码模板我没能完全看 ...
- HDU 3294 (Manacher) Girls' research
变形的求最大回文子串,要求输出两个端点. 我觉得把'b'定义为真正的'a'是件很无聊的事,因为这并不会影响到最大回文子串的长度和位置,只是在输出的时候设置了一些不必要的障碍. 另外要注意一下原字符串s ...
随机推荐
- cocos2d-x 2.x 图层特效Effect(转)
CCSprite* sp = CCSprite::create("Default.png"); sp->setPosition(ccp(, )); addChild(sp); ...
- C语言--const修饰指针解析
这种例子在我们平时编程时可能会很少用,但是在面试时被问的可能性就很大了. 用const修饰指针,常见的情况可以分为四种: 1.const int *p; // p 可变,p 指向的对象不可 ...
- linux命令帮助
Linux命令格式:command [options] [arguments]command:命令options: 参数 [] 表示是可选的;<> 表示是可变化的; x|y|z 表示只能选 ...
- mybati之#与$的区别
$是用于sql的拼接: //因为user_name是String类型,所以在sql中加上单引号,需要手动的判断数据类型,value是如果没有指定参数的话,value就是默认参数名称,获取穿的参数就是: ...
- tomcat 远程 调试 eclipse
windows系统: 修改catalina.bat 端口9000 SET CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE ...
- iOS_SN_UITableView的优化
1.提前计算并缓存好高度(布局),因为heightForRowAtIndexPath:是调用最频繁的方法. 2.异步绘制,遇到复杂界面,遇到性能瓶颈时,可能就是突破口. 3.滑动时按需加载,这个在大量 ...
- Heroku使用
先要生成一个公钥,使用命令:$ ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save ...
- 乱七八糟 Nodejs 系列一:试水
看Nodejs比较舒服的人,个人认为主要是: 以前是后端,转成前端的人: 前端巨牛的人: 后端巨牛的人: 巨牛的人... 当然还有我这种,脑抽不止的人~~ 不过学习的过程中发现,如果不是上来就用exp ...
- ECSTORE验证码优化
用ecstore的朋友应该知道,ecstore的验证码超级鸡肋. 特别是字母和数字混合,根本就看不懂写的是什么? 数字还好,但是字母就别提了.而且还小. 索性就把验证码换掉.研究一下发现,ecstor ...
- JavaScript进阶学习的一些建议
blankyao最近问我如何学习JavaScript,他觉着在理解了JavaScript的语法之后,不知如何去学习JavaScript了. 其实我也是个JavaScript小菜,最近在开发中遇到不少关 ...