P5496 【模板】回文自动机(PAM)
2024-08-28 14:16:58
做一下强制在线处理即可
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int trans[500500][26],len[500500],s[500500],fail[500500],last,n,Nodecnt,cnt[500500];
char S[500500];
int New_state(int _len){
len[Nodecnt]=_len;
return Nodecnt++;
}
int find(int t,int o){
while(s[t-len[o]-1]!=s[t])
o=fail[o];
return o;
}
void add_len(int n){
int cur=find(n,last);
if(!trans[cur][s[n]]){
int t=New_state(len[cur]+2);
fail[t]=trans[find(n,fail[cur])][s[n]];
cnt[t]=cnt[fail[t]]+1;
trans[cur][s[n]]=t;
}
last=trans[cur][s[n]];
}
int main(){
scanf("%s",S+1);
s[0]=-1;
New_state(0);
fail[0]=1;
New_state(-1);
fail[1]=1;
last=0;
n=strlen(S+1);
int ans=0;
for(int i=1;i<=n;i++){
s[i]=(S[i]-97+ans)%26;
add_len(i);
ans=cnt[last];
printf("%d ",ans);
}
return 0;
}
最新文章
- 06章 映射一对多双向关联关系、以及cascade、inverse属性
- oracle的回收站介绍
- Ubuntu 16.04 安装ftp服务器传输文件
- stack+DFS ZOJ 1004 Anagrams by Stack
- 深度学习 vs 机器学习 vs 模式识别
- hibernate对象关系实现(四)继承实现
- 1962-Fibonacci
- 使用SpringAop 验证方法参数是否合法
- 【转】通过CMD命令设置定时关机及ShutDown命令大全
- C++ Primer chap7
- 解决TabActivity中子页面不通过导航跳转到还有一个页面的问题
- ios7 实现应用内保真截屏
- Linux运维正则表达式之grep
- PHP文件上传大小限制问题
- 【Ansible】Playbook实例
- TOJ1398正方形的编成 或者 POJ2362
- xml布局中include的使用
- poj 2739 Sum of Consecutive Prime Numbers 尺取法
- 互联网轻量级框架SSM-查缺补漏第三天
- websocket之三:Tomcat的WebSocket实现