[bzoj2565]最长双回文子串
来源:互联网 发布:java线程共享数据 编辑:程序博客网 时间:2024/04/28 09:10
题目大意
给定字符串求其最长双回文子串,双回文子串的定义是该串可以分成两个串它们都是回文串。
题解
详见GDKOI2016的项链
我直接超标了(不知所措
#include<cstdio>#include<cstring>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b) for(i=a;i>=b;i--)using namespace std;const int maxn=100000+10;int f[maxn*4];int tree[maxn*20];int i,j,k,l,r,t,n,m,ans,tot;char ch;char s[maxn*2],h[maxn*4];void change(int p,int l,int r,int a,int b){ if (l==r){ tree[p]=b; return; } int mid=(l+r)/2; if (a<=mid) change(p*2,l,mid,a,b);else change(p*2+1,mid+1,r,a,b); tree[p]=max(tree[p*2],tree[p*2+1]);}int query(int p,int l,int r,int a,int b){ if (a>b) return 0; if (l==a&&r==b) return tree[p]; int mid=(l+r)/2; if (b<=mid) return query(p*2,l,mid,a,b); else if (a>mid) return query(p*2+1,mid+1,r,a,b); else return max(query(p*2,l,mid,a,mid),query(p*2+1,mid+1,r,mid+1,b));}int main(){ while (1){ ch=getchar(); if (ch<'a'||ch>'z') break; s[++n]=ch; } h[0]='@'; h[1]='$'; fo(i,1,n) h[i*2]=s[i],h[i*2+1]='$'; h[n*2+2]='%'; j=0; f[0]=0; fo(i,2,n*2){ if (i>j+f[j]){ f[i]=0; while (h[i+f[i]+1]==h[i-f[i]-1]) f[i]++; } else{ f[i]=min(f[2*j-i],j+f[j]-i); while (h[i+f[i]+1]==h[i-f[i]-1]) f[i]++; } if (i+f[i]>j+f[j]) j=i; } fo(i,3,n+2) change(1,1,n*2+1,i-f[i],i); fo(i,2,n*2){ ans=max(ans,query(1,1,n*2+1,1,i+f[i])-i); if (i+n+1<=n*2) change(1,1,n*2+1,i+n+1-f[i+n+1],i+n+1); } printf("%d\n",ans);}
0 0
- [bzoj2565]最长双回文子串
- bzoj2565: 最长双回文串
- bzoj2565 最长双回文串
- 【BZOJ2565】最长双回文串
- bzoj2565 最长双回文串
- bzoj2565 最长双回文串
- 【bzoj2565】最长双回文串
- Manacher 模板 【bzoj2565】 最长双回文子串
- Bzoj2565:最长双回文串:回文自动机
- 【BZOJ2565】最长双回文串 Manacher
- 【bzoj2565】最长双回文串 manacher
- bzoj2565 最长双回文串 manacher
- BZOJ2565: 最长双回文串 manacher算法
- bzoj2565: 最长双回文串 manacher
- [BZOJ2565]最长双回文串(manacher)
- [BZOJ2565]最长双回文串(manacher)
- [bzoj2565]最长双回文串 manacher
- [bzoj2565][manacher][DP]最长双回文串
- RSA算法原理(二)
- 用户的主要群组和次要群组
- 如何删除MAC系统自带输入法
- 51nod1015 水仙花数
- Android键盘遮挡输入框的问题
- [bzoj2565]最长双回文子串
- iOS开发之简单实现圆形进度条
- Oracle数据库DBA必备基本技能
- Android 学习网站
- 去除SAP中的一些特殊字符
- JAVA 基础面试题
- Java设计模式透析之 —— 模板方法(Template Method)
- nginx 使用
- 3.14 HTML中获取当前项目路径