HDU 3294 Manacher模版题
来源:互联网 发布:厦门市网络公章 编辑:程序博客网 时间:2024/06/07 04:08
点击打开链接
题意:求最长回文子串所在的区间,然后第一个字符代表a,以后的顺推,最后输出这个区间顺推后的串
思路:Manacher轻松水过,记录下最长回文串的位置和长度就行了,然后输出时自己处理一下,大水题.......
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <algorithm>using namespace std;typedef long long ll;const int inf=0x3f3f3f3f;const int maxn=200010;char str[maxn],tmp[maxn<<1];int len1[maxn<<1],pos;int init(char *st){ int len=strlen(st); tmp[0]='@'; for(int i=1;i<=2*len;i+=2){ tmp[i]='#'; tmp[i+1]=st[i/2]; } tmp[2*len+1]='#'; tmp[2*len+2]='$'; tmp[2*len+3]=0; return 2*len+1;}int Manacher(char *st,int len){ int p=0,ans=0,po=0; for(int i=1;i<=len;i++){ if(p>i) len1[i]=min(p-i,len1[2*po-i]); else len1[i]=1; while(st[i-len1[i]]==st[i+len1[i]]) len1[i]++; if(len1[i]+i>p){ p=len1[i]+i; po=i; } if(len1[i]>ans){ ans=len1[i]; pos=i; } } return ans-1;}int main(){ char ch; while(scanf(" %c%s",&ch,str)!=-1){ init(str); int len=init(str); int ans=Manacher(tmp,len); if(ans==1) printf("No solution!\n"); else{ int le,ri; if(pos%2==0){ le=pos/2-1-ans/2; ri=le+ans-1; }else{ le=pos/2-ans/2; ri=le+ans-1; } printf("%d %d\n",le,ri); int t=ch-'a'; for(int i=le;i<=ri;i++){ int k=str[i]-t; if(k>=97) printf("%c",str[i]-t); else printf("%c",str[i]-t+26); } printf("\n"); } } return 0;}
0 0
- HDU 3294 Manacher模版题
- hdu 3294 Manacher模版题
- HDU 3068 Manacher 模版题
- hdu 3068 最长回文 (Manacher模版)
- HDU 3068 最长回文 【manacher模版】
- POJ 3974 Manacher模版题
- Manacher-模版题poj3974 hdu3068
- Manacher模版
- Manacher模版
- hdu 3294 manacher算法
- HDU 3294 manacher
- hdu3068 manacher模版
- [manacher] hdu 3294 Girls' research
- hdu 3294 Girls' research(manacher)
- HDU - 3294 Girls' research(manacher)
- hdu 3294 Girls' research【manacher】
- HDU 3294 Girls’ research Manacher
- HDU 3068 Manacher 模板题
- dialog全屏那些事
- Elasticsearch关于unassigned shards的查看
- Android studio设置文件编码方式为UTF-8方法
- ARM平台嵌入式Linux下使用3G/4G 模块
- Yahoo! Cloud Serving Benchmark (YCSB)
- HDU 3294 Manacher模版题
- 八皇后问题(java实现)
- putty_百度百科
- javadoc 出现:错误: 编码GBK的不可映射字符
- 细聊分布式ID生成方法
- HTML5 内联 SVG
- 搭建SpringMvc框架中遇到的问题记录
- Android应用setContentView与LayoutInflater加载解析机制源码分析
- 【JS】:JS中的array详解