Description

求一个串中包含几个回文串。

Input

输入一个字符串\(S\)

Output

包含的回文串的个数.

看到题解里面有人人写回文自动机.

有必要那么麻烦嘛 emmm

我们直接跑\(Manacher\)就好了啊.

答案就是以每一位为中心的回文串长度/2的和。

(如果添加字符则为回文半径长度/2。)

这个就不多解释了.很明显的一个东西。

不能理解的话,可以看下这个

# a # a # b # a # a #

1 2 3 2 1 6 1 2 3 2 1

数字对应于每一个位置的回文半径

.(实际上减去\(1\)才是,但是计算的时候要加上1,所以代码里面直接用了这个.)

代码

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#define R register using namespace std; const int maxn=1008; char ch[maxn];
char s[maxn<<2];
int len,RL[maxn<<2],MaxRight,center,ans;
int main()
{
scanf("%s",ch);
len=strlen(ch);
for(R int i=0;i<len;i++)s[2*i+1]=ch[i];
len=2*len+1;
for(R int i=0;i<len;i++)
{
if(i<=MaxRight)
RL[i]=min(RL[2*center-i],MaxRight-i);
else RL[i]=1;
while(s[i-RL[i]]==s[i+RL[i]] and i-RL[i]>=0 and i+RL[i]<len)
RL[i]++;
if(i+RL[i]-1>MaxRight)
MaxRight=i+RL[i]-1,center=i;
}
for(R int i=0;i<len;i++)ans+=RL[i]/2;
printf("%d",ans);
}

最新文章

  1. BZOJ 3639: Query on a tree VII
  2. objective-c系列-NSString
  3. MySQL模糊查询:LIKE模式和REGEXP模式
  4. Nexus配置
  5. JS火狐与IE的差别
  6. 使用zii.widgets.CDetailView显示内容
  7. GLSL ES 3.0 和 2.0 的区别
  8. Spring xml配置
  9. Asp.Net HttpPostedFile和base64两种上传图片(文件)方式
  10. 2017BUAA软工个人作业Week1
  11. Resolve Missing artifact Issue in maven
  12. wordpress模板修改及函数说明
  13. Linux systemd limits
  14. Jedis与Lua脚本结合
  15. 循序渐进学.Net Core Web Api开发系列【0】:序言与目录
  16. sql server2008本地连接选择windows身份验证无法登陆的解决办法
  17. Hadoop学习(二) Hadoop配置文件参数详解
  18. 20145314郑凯杰 《Java程序设计》实验五 实验报告
  19. 抓包工具Fidder移动端HTTP请求抓包详解
  20. Leetcode-Populating Next Right Pointer in Binary Tree II

热门文章

  1. [Leetcode] Remove duplicate from sorted list ii 从已排序的链表中删除重复结点
  2. BZOJ 2707: [SDOI2012]走迷宫 拓扑+高斯消元+期望概率dp+Tarjan
  3. 特殊密码锁 的通过码是:(请注意,在openjudge上提交了程序并且通过以后,就可以下载到通过码。请注意看公告里关于编程作业的说明)
  4. Small things are better
  5. noip 2011观光公交
  6. rest与restful
  7. 7月18号day10总结
  8. Java多线程1:Java中sleep,wait,yield,join的区别
  9. Spring学习--用 ASpectJ 注解实现 AOP
  10. C# 序列化原因 (转)