BZOJ 2565: 最长双回文串
来源:互联网 发布:银行卡余额查询软件 编辑:程序博客网 时间:2024/05/21 09:35
智商康复计划。。。。。。。。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#include<cmath>using namespace std;#define rep(i,l,r) for(int i=l;i<=r;i++)#define per(i,r,l) for(int i=r;i>=l;i--)#define mmt(a,v) memset(a,v,sizeof(a))const int N=100000+5;char s[N<<1],t[N];int n;int r[N<<1],a[N<<1],b[N<<1];int manacher(){int m=n<<1|1;rep(i,1,m)if(i&1)s[i]='#';else s[i]=t[i>>1];s[m]='#';int id=0,mx=0;rep(i,1,m){if(mx>i)r[i]=min(mx-i,r[2*id-i]);else r[i]=1;while(i-r[i]>=1&&i+r[i]<=m&&s[i-r[i]]==s[i+r[i]])r[i]++;if(i+r[i]>mx)mx=i+r[i],id=i;}int j=1;rep(i,1,m){while(j+r[j]<=i)j++;a[i]=j;}j=m;per(i,m,1){while(j-r[j]>=i)j--;b[i]=j;}int ans=0;rep(i,1,m)if(i&1)ans=max(ans,b[i]-a[i]);return ans;}int main(){//freopen("a.in","r",stdin);scanf("%s",t+1);n=strlen(t+1);printf("%d\n",manacher());return 0;}
0 0
- BZOJ 2565 最长双回文串 Manacher
- [bzoj 2565] 最长双回文串
- BZOJ 2565 最长双回文串(manacher)
- BZOJ 2565: 最长双回文串
- BZOJ 2565 最长双回文串
- BZOJ 2565 最长双回文串
- bzoj 2565: 最长双回文串 manacher
- BZOJ 2565 最长双回文串 Manacher
- BZOJ 2565: 最长双回文串 manacher
- bzoj 2565: 最长双回文串
- bzoj 2565 最长双回文串 manacher
- BZOJ 2565: 最长双回文串 manacher
- bzoj 2565: 最长双回文串 manachar
- BZOJ 2565 最长双回文串
- bzoj 2565: 最长双回文串 manacher
- BZOJ[2565]最长双回文串 Manacher
- BZOJ 2565: 最长双回文串
- BZOJ 2565 最长双回文串(回文自动机)
- Android官方开发文档Training系列课程中文版:高效显示位图之在UI中展示位图
- 记Hadoop2.5.0线上mapreduce任务执行map任务划分的一次问题解决
- 青蛙的约会----扩展欧几里得+乘法逆元
- SICP ex2-6 2-15 Alyssa
- UVA116 Unidirectional TSP
- BZOJ 2565: 最长双回文串
- 安卓_第三方QQ授权登录
- hdu1252 Hike on a Graph ----BFS
- 最长字符串回文子串问题
- 决策树(ID3、C4.5、CART、随机森林)
- 利用ajax上传文件到服务器(服务端用的是Struts2)1.
- 写给新入职的毕业生们
- FileUtil(大文件分割)
- CentOS 修改 SSH 端口