回文自动机板子

或者是SAM+manacher+倍增,就是manacher求本质不同回文串(让f++的串),然后在SAM倍增查询对应点出现次数

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=300005;
int n,ch[N][27],fa[N],si[N],dis[N],la=1,con=1;
long long ans;
char s[N];
void ins(int c,int w)
{
int p=la;
for(;s[w-1-dis[p]]!=s[w];p=fa[p]);
if(!ch[p][c])
{
int q=fa[p],cur=++con;
for(;s[w-1-dis[q]]!=s[w];q=fa[q]);
fa[cur]=ch[q][c],ch[p][c]=cur,dis[cur]=dis[p]+2;
}
si[la=ch[p][c]]++;
}
int main()
{
scanf("%s",s+1);
n=strlen(s+1);
fa[0]=1,fa[1]=1,dis[1]=-1;
for(int i=1;i<=n;i++)
ins(s[i]-'a',i);
for(int i=con;i>=1;i--)
si[fa[i]]+=si[i];
for(int i=1;i<=con;i++)
ans=max(ans,1ll*dis[i]*si[i]);
printf("%lld\n",ans);
return 0;
}

最新文章

  1. python 3.5 成功安装 scrapy 的步骤
  2. 相邻div实现一个跟着另一个自适应高度示例代码
  3. Java多线程学习(转载)
  4. js倒计时功能
  5. 【HDOJ】1097 A hard puzzle
  6. EF执行存储过程(带输出参数)
  7. js下读取input中的value值
  8. Openjudge-计算概论(A)-1的个数
  9. 使用shape来定义控件的一些显示属性
  10. 基于C#的socket编程的TCP异步实现
  11. webview之学习文章(待续)
  12. 8.装饰模式(Decorator Pattern)
  13. ue4配置分析记录
  14. RPM 包的构建 - 实例
  15. JS高级 - 面向对象5(继承,引用)
  16. IE条件注释判断
  17. springboot 前后端分离开发 从零到整(四、更改密码操作)
  18. Spring Session + Redis实现分布式Session共享
  19. JSTL-2
  20. Nessus home与Nexpose community 对比

热门文章

  1. sort-list——链表、快慢指针找中间、归并排序
  2. 使用word2010写文章发布到blog
  3. Log4cpp 使用手册
  4. MySql视频教程——百度云下载路径
  5. @SuppressWarnings 用法
  6. Windows7和Ubuntu12.04无法选择系统
  7. C++游戏系列2:角色装备武器
  8. EasyBCD在windows7基础上安装Ubuntu 14.04双系统详
  9. JSP复习笔记
  10. firefox 45 版本