题目链接:http://icpc.njust.edu.cn/Problem/Hdu/3294/

回文长度如果是mxx,回文中心是id的话,在扩展串中(id-mxx+1,id+mxx-1)的这段中去除标记符号的部分就是回文串。还有个注意点就是错位循环赋值的问题。

代码如下:

 #include<bits/stdc++.h>
using namespace std;
typedef unsigned int ui;
typedef long long ll;
typedef unsigned long long ull;
#define pf printf
#define mem(a,b) memset(a,b,sizeof(a))
#define prime1 1e9+7
#define prime2 1e9+9
#define pi 3.14159265
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define scand(x) scanf("%llf",&x)
#define f(i,a,b) for(int i=a;i<=b;i++)
#define scan(a) scanf("%d",&a)
#define dbg(args) cout<<#args<<":"<<args<<endl;
#define inf 0x3f3f3f3f
#define maxn 200010
int n,m,t;
char s[maxn],ma[maxn<<];
int Len[maxn<<];
int mxx,id;//最大回文半径和中心
void init(char c,char* s)
{
int len=strlen(s);
f(i,,len-)
{
s[i]=(char)('a'+(s[i]-c+)%);
}
}
void manacher(char* s,int len)
{
int l=;
ma[l++]='$';
ma[l++]='#';
f(i,,len-)
{
ma[l++]=s[i];
ma[l++]='#';
}
ma[l]=;
int pos=,mr=;
mxx=;
f(i,,l-)
{
Len[i]=(mr>i)?min(mr-i,Len[*pos-i]):;
while(ma[i+Len[i]]==ma[i-Len[i]])Len[i]++;
if(i+Len[i]>mr)mr=i+Len[i],pos=i;
if(Len[i]->mxx)
{
mxx=Len[i]-;
id=i;
}
}
}
int main()
{
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);
std::ios::sync_with_stdio(false);
char c;
while(scanf(" %c %s",&c,s)==)
{
init(c,s);
int len=strlen(s);
int ansl=,ansr=;
manacher(s,len);
if(mxx==)pf("No solution!\n");//回文长度是1
else
{
int l=(id-mxx+)/-;
int r=(id+mxx-)/-;
pf("%d %d\n",l,r);
f(i,l,r)pf("%c",s[i]);
pf("\n");
// f(i,id-mxx+1,id+mxx-1)pf("%c",ma[i]);
// pf("\n");
}
}
}

最新文章

  1. C#接口和抽象类的区别
  2. Nodejs进阶:基于express+multer的文件上传
  3. minicom使用
  4. Openstack Neutron DVR workflow
  5. 团队项目 SRS文档
  6. shell 常用命令
  7. 如何在IIS7或IIS7.5中导入导出站点及应用程序池.
  8. (转) CS0234: 命名空间“System.Web.Mvc”中不存在类型或命名空间名称“Ajax”(是否缺少程序集引用?)
  9. C# Socket TCP Server &amp; Client &amp; nodejs client
  10. ARM处理器工作模式
  11. select超链接跳转A
  12. ledisdb:支持类redis接口的嵌入式nosql
  13. Python进行JSON格式化输出,以及汉字显示问题
  14. python3 内置函数
  15. LuoGu P2735 电网 Electric Fences
  16. 基于socket构造c/s 架构软件
  17. Nginx子域名配置
  18. js 将数字转换成人民币大写的方法
  19. 【转】SQL Server、Oracle、MySQL和Vertica数据库常用函数对比
  20. 07: Django 使用ldap登录、注销等

热门文章

  1. Proto3:C++基本使用
  2. Java编程Tips
  3. java反序列化-ysoserial-调试分析总结篇(3)
  4. VM安装Linux Centos7.0虚拟机
  5. tomcat&amp;servlet初记
  6. text-decoration与color属性
  7. 【Geek议题】合理的VueSPA架构讨论(上)
  8. 在windows上极简安装GPU版AI框架(Tensorflow、Pytorch)
  9. C++冒险攻略(持续更新中。。。)
  10. Lambda 方法引用