HYSBZ 2565 最长双回文串 (回文树)
2565: 最长双回文串
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 1377 Solved: 714
[Submit][Status][Discuss]
Description
输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(|X|,|Y|≥1)且X和Y都是回文串。
Input
一行由小写英文字母组成的字符串S。
Output
Sample Input
Sample Output
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <math.h>
#include <stdio.h>using namespace std;
typedef long long int LL;
const int maxn=1e5+5;
char str[maxn];
struct Tree
{int next[maxn][26];int fail[maxn];int len[maxn];int s[maxn];int last;int p;int n;int new_node(int x){memset(next[p],0,sizeof(next[p]));len[p]=x;return p++;}void init(){p=0;new_node(0);new_node(-1);last=0;n=0;s[0]=-1;fail[0]=1;}int get_fail(int x){while(s[n-len[x]-1]!=s[n])x=fail[x];return x;}int add(int x){x-='a';s[++n]=x;int cur=get_fail(last);if(!(last=next[cur][x])){int now=new_node(len[cur]+2);fail[now]=next[get_fail(fail[cur])][x];next[cur][x]=now;last=now;}return len[last];}
}tree;
int s1[maxn];
int s2[maxn];
int main()
{while(scanf("%s",str)!=EOF){int len=strlen(str);tree.init();memset(s1,0,sizeof(s1));memset(s2,0,sizeof(s2));for(int i=0;i<len;i++){s1[i]=tree.add(str[i]);}tree.init();for(int i=len-1;i>=0;i--){s2[i]=tree.add(str[i]);}int ans=0;for(int i=0;i<len;i++){ans=max(ans,s1[i]+s2[i+1]);}printf("%d\n",ans);}return 0;
}
HYSBZ 2565 最长双回文串 (回文树)相关推荐
- HYSBZ - 2565 最长双回文串(回文自动机)
题目链接:点击查看 题目大意:给出一个字符串 s ,求最长双回文子串,题目规定最长双回文子串 t 可以拆成左右两部分,满足两部分都是回文串 题目分析:一开始读错题了,以为是双回文串本身也需要是回文串, ...
- HYSBZ 2565 最长双回文串
题意:找到一个最长回文子串,该子串能够分成两长度大于0的部分,每部分都是一个回文串 题解:回文树维护一个以i为起点和终点的最长回文串长度数组即可 #include<bits/stdc++.h&g ...
- bzoj 2565: 最长双回文串 manacher算法
2565: 最长双回文串 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem. ...
- BZOJ 2565: 最长双回文串
2565: 最长双回文串 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1769 Solved: 895 [Submit][Status][Dis ...
- 2565: 最长双回文串
Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为"abc",逆序为"cba",不相同). 输 ...
- BZOJ 2565 最长双回文串 Manacher
题目大意: 定义双回文串G是指一个可以被拆分成两个部分(S和T)的字符串G = S + T, 且S和T都是回文串的串, G自己本身可以不是回文串 给出一个长度为n ( 2 <= n <= ...
- 洛谷P4555 [国家集训队]最长双回文串(manacher 线段树)
题意 题目链接 Sol 我的做法比较naive..首先manacher预处理出以每个位置为中心的回文串的长度.然后枚举一个中间位置,现在要考虑的就是能覆盖到i - 1的回文串中 中心最靠左的,和能覆盖 ...
- HYSBZ - 3676 回文串(回文自动机)
题目链接:点击查看 题目大意:求出回文子串中 出现次数*长度 的最大值 题目分析:回文自动机直接搞维护最大值就是答案了 代码: #include<iostream> #include< ...
- 论如何优雅的处理回文串 - 回文自动机详解
写在前面 最近无意中看到了这个数据结构,顺便也就学习了一下. 而且发现网上关于这个算法的描述有很多地方是错的,在这里做了一些更正. 处理字符串的算法很多: KMP,E-KMP,AC自动机,后缀三兄弟: ...
最新文章
- excel同一单元格怎么换行_Excel工作表中最经典的10个应用,小技巧,大作用
- 第七十四期:国内SaaS企业终于活成了自己讨厌的样子!
- 元气骑士如何获得机器人成就皮肤_元气骑士:获得成就叹息之墙,花圃免费开,附带5000蓝币奖励...
- C++新特性探究(二):override、final
- 《Cisco/H3C交换机高级配置与管理技术手册》目录
- python3基本语法规则,Python中的语法规则
- 【转】kubernetes 中 deployment 支持哪些键值
- 惠普2t服务器硬盘,HP DL388 Gen8系列服务器硬盘超过2T的分区方法
- 【android】集成腾讯的播放器SDK
- 网站为什么要做外链?
- 大学生html5实训报告,大学生实训心得体会范文(精选5篇)
- python 爬虫 短信验证码
- 如何在HTML页面中引入一首网易云音乐以及B站的视频
- 全球与中国PMN-PT单晶市场深度研究分析报告
- UBOOT移植详细解析(转)
- php45 上海北诺,Bio-Gel P6 生物胶P100 Bio-Rad 150-1940
- 解决 Vant中 输入框(Field)组件获取不到输入值
- 阿里云ECS共享型n4服务器1核2G怎么样?
- windows下快速实现labelImg环境配置
- 凯屋qq速记员 下载