Poj1743 Musical Theme
来源:互联网 发布:nba单场数据记录 编辑:程序博客网 时间:2024/05/21 05:05
题目传送门
题意:对一个序列的差分求出现至少两次且两次不相交的最长子串
也是SA和SAM都可以做,SA稍微麻烦
SA做法:二分+height分段rmq
SAM做法(太神了):对于每个节点的right集合,求出其中的最大值和最小值
那么合法的长度一定为min(mx[x],r[x]-l[x])(l和r分别是最大值和最小值)
#pragma GCC opitmize("O3")#pragma G++ opitmize("O3")#include<stdio.h>#include<string.h>#include<algorithm>#define N 40005using namespace std;int s[N][180],mx[N],sz[N],f[N],a[N];int n,m,lst=1,cnt=1,v[N],w[N],l[N],r[N];inline int extend(int c){int p=lst,np=lst=++cnt,q,nq;mx[np]=mx[p]+1; sz[np]=1; l[np]=r[np]=mx[np];for(;p&&!s[p][c];p=f[p]) s[p][c]=np;if(!p) return f[np]=1;q=s[p][c];if(mx[q]==mx[p]+1) f[np]=q;else{nq=++cnt;mx[nq]=mx[p]+1;f[nq]=f[q]; f[q]=f[np]=nq;memcpy(s[nq],s[q],180<<2);for(;p&&s[p][c]==q;p=f[p]) s[p][c]=nq;}}int _18520(){scanf("%d",&n); int ans=0; lst=cnt=1;if(!n) return 0;memset(l,127,sizeof(l));memset(r,0,sizeof(r));memset(v,0,sizeof(v));memset(mx,0,sizeof(mx));memset(f,0,sizeof(f));memset(s,0,sizeof(s));for(int i=1;i<=n;++i) scanf("%d",a+i);for(int i=1;i<n;++i) a[i]=a[i+1]-a[i]+88; --n;for(int i=1;i<=n;++i) extend(a[i]);for(int i=1;i<=cnt;++i) ++v[mx[i]];for(int i=1;i<=n;++i) v[i]+=v[i-1];for(int i=cnt;i;--i) w[v[mx[i]]--]=i;for(int p,i=cnt;i;--i){p=w[i]; sz[f[p]]+=sz[p];l[f[p]]=min(l[f[p]],l[p]);r[f[p]]=max(r[f[p]],r[p]);}for(int i=cnt;i;--i) ans=max(ans,min(mx[i],r[i]-l[i]));if(ans<4) puts("0"); else printf("%d\n",++ans); return 1;}int main(){ while(_18520()); }
阅读全文
0 0
- POJ1743 Musical Theme
- POJ1743--Musical Theme
- POJ1743 Musical Theme
- POJ1743 Musical Theme
- POJ1743 Musical Theme
- POJ1743:Musical Theme
- POJ1743-Musical Theme
- Poj1743 Musical Theme
- poj1743:Musical Theme(后缀数组)
- 后缀数组 - poj1743 Musical Theme
- POJ1743 Musical Theme 后缀数组
- POJ1743 Musical Theme 题解&代码
- poj1743:Musical Theme(后缀数组)
- poj1743 Musical Theme (后缀数组)
- poj1743 Musical Theme【解法一】
- poj1743 Musical Theme 后缀数组
- [后缀数组]poj1743 Musical Theme
- poj1743 Musical Theme 二分+后缀数组
- CodeForces
- 记录一下学习C#的历程
- 吴恩达deeplearning之CNN—卷积神经网络入门
- [错误]整合spring与通用Mapper时的错误,暂时没找到解决办法。
- 在此处打开命令窗口 (Open command window here)
- Poj1743 Musical Theme
- JavaScript实现选择排序
- FreeMarker
- Modbus通用数据读取工具设计及使用
- http协议-response
- PHP快速排序
- ZOJ Problem Set
- CNN神经网络学习疑惑
- Python 练习实例19