【CF245H】Queries for Number of Palindromes(回文树)

题面

洛谷

题解

回文树,很类似原来一道后缀自动机的题目

后缀自动机那道题

看到\(n\)的范围很小,但是\(Query\)很多

所以提前预处理出每一段\(l,r\)的答案

时间复杂度\(O(n^2+Q)\)

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
using namespace std;
#define ll long long
#define RG register
#define MAX 5050
inline int read()
{
RG int x=0,t=1;RG char ch=getchar();
while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
if(ch=='-')t=-1,ch=getchar();
while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
return x*t;
}
int ans[MAX][MAX];
char s[MAX];
char ch[MAX];
struct PT
{
struct Node
{
int son[26];
int len,ff;
}t[MAX];
int last,tot,dep[MAX];
void init()
{
t[tot=1].len=-1;
t[last=0].ff=t[1].ff=1;
}
void clear()
{
memset(t,0,sizeof(t));
memset(dep,0,sizeof(dep));
init();
}
void extend(int c,int n,char *s)
{
int p=last;
while(s[n-t[p].len-1]!=s[n])p=t[p].ff;
if(!t[p].son[c])
{
int v=++tot,k=t[p].ff;
while(s[n-t[k].len-1]!=s[n])k=t[k].ff;
t[v].ff=t[k].son[c];
t[v].len=t[p].len+2;
t[p].son[c]=v;
dep[v]=dep[t[v].ff]+1;
}
last=t[p].son[c];
}
}PT;
int main()
{
scanf("%s",s+1);
int n=strlen(s+1);
for(int i=1;i<=n;++i)
{
PT.clear();
for(int j=i;j<=n;++j)ch[j-i+1]=s[j];
for(int j=i;j<=n;++j)
{
PT.extend(ch[j-i+1]-97,j-i+1,ch);
ans[i][j]=ans[i][j-1]+PT.dep[PT.last];
}
}
int Q=read();
while(Q--)
{
int l=read(),r=read();
printf("%d\n",ans[l][r]);
}
return 0;
}

最新文章

  1. Key/Value之王Memcached初探:一、掀起Memcached的盖头来
  2. Quoit Design---hdu1007(最近点对问题 分治法)
  3. rabbitMQ学习(一)
  4. Unit06 - 抽象类、接口和内部类(下) 、 面向对象汇总
  5. 命令模式坚决svn树冲突(local unversioned, incoming add upon update)
  6. jquery对于table的操作
  7. Android mvp模式、mvvm模式
  8. php 函数之 )_each()list()implode()explode()in_array()
  9. 老旧Webkit浏览器行内元素0间距问题
  10. 100M 宽带办理
  11. UITableView性能优化及手工绘制UITableViewCell
  12. Codeforces 451E Devu and Flowers(容斥原理)
  13. 决策树学习笔记(Decision Tree)
  14. CsQuery中文编码乱码问题
  15. img的complete和onload
  16. Ubuntu Firefox HTML5
  17. centos7 install nginx+fastdfs
  18. 用log4net记录日志信息
  19. 如何评价 React 实现的前端 UI 库 material-ui?
  20. Spring Boot 如何极简入门?

热门文章

  1. vuex是什么东西?
  2. MySQL5.7 group by新特性,报错1055
  3. 配置可以通过http协议访问的svn服务器
  4. Docker Centos6 下建立 Docker 桥接网络
  5. Mybatis使用总结-思维导图
  6. Deep Learning for Information Retrieval
  7. Java集合中的AbstractMap抽象类
  8. 如何解决jQuery easyui中locale文件下easyui-lang-zh_CN中文乱码问题
  9. Js常用的函数
  10. Windows系统上FFMpeg-PHP的使用