博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ4698 Sdoi2008 Sandy的卡片
阅读量:6097 次
发布时间:2019-06-20

本文共 1748 字,大约阅读时间需要 5 分钟。

转化题意可以得到 我们求得就是 所有串的差分串的LCS

SAM水过就好啦

#include
#include
#include
#include
#include
#define inf 20021225#define ll long long#define mxn 110using namespace std;struct edge{int to,lt;}e[mxn*4]; int in[mxn*4],cnt;struct node{int fa,len;map
mp;}t[mxn*4];int poi,rt,lt,ch[mxn],n;int mx[mxn*4],mn[mxn*4];void add(int x,int y){ e[++cnt].to=y;e[cnt].lt=in[x];in[x]=cnt;}void pre(){rt=lt=++poi;memset(mn,48,sizeof(mn));}void insert(int c){ int p=lt, np=lt=++poi; t[np].len=t[p].len+1; for(;p&&!t[p].mp[c];p=t[p].fa) t[p].mp[c]=np; if(!p){t[np].fa=rt; return;} int q=t[p].mp[c]; if(t[q].len==t[p].len+1){t[np].fa=q;return;} int nq=++poi; t[nq].mp=t[q].mp; t[nq].len=t[p].len+1; t[nq].fa=t[q].fa; t[np].fa=t[q].fa=nq; for(;p&&t[p].mp[c]==q;p=t[p].fa) t[p].mp[c]=nq;}void build(){for(int i=2;i<=poi;i++) add(t[i].fa,i);}void init(){memset(mx,0,sizeof(mx));}void find(){ int pos=rt,len=0; for(int i=1;i<=n;i++) { int tmp=ch[i]; if(t[pos].mp[tmp]) pos=t[pos].mp[tmp],len++; else { for(;pos&&!t[pos].mp[tmp];pos=t[pos].fa); if(!pos) pos=rt,len=0; else len=t[pos].len+1,pos=t[pos].mp[tmp]; } //printf("%d\n",len); mx[pos]=max(mx[pos],len); }}void dfs(int x){ for(int i=in[x];i;i=e[i].lt) { dfs(e[i].to); mx[x]=max(mx[x],min(mx[e[i].to],t[x].len)); } mn[x]=min(mn[x],mx[x]);}int a[mxn];int main(){ int T; scanf("%d",&T); for(int i=1;i<=T;i++) { scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); if(i>1) ch[i-1]=a[i]-a[i-1]; } n--; if(i==1) { pre(); for(int i=1;i<=n;i++) insert(ch[i]); build(); } else init(),find(),dfs(rt); } int ans=0; for(int i=1;i<=poi;i++) ans=max(ans,mn[i]); printf("%d\n",ans+1); return 0;}

 

转载于:https://www.cnblogs.com/hanyuweining/p/10321907.html

你可能感兴趣的文章
充分利用HTML标签元素 – 简单的xtyle前端框架
查看>>
设计模式(十一):FACADE外观模式 -- 结构型模式
查看>>
iOS xcodebuile 自动编译打包ipa
查看>>
程序员眼中的 SQL Server-执行计划教会我如何创建索引?
查看>>
【BZOJ】1624: [Usaco2008 Open] Clear And Present Danger 寻宝之路(floyd)
查看>>
cmake总结
查看>>
数据加密插件
查看>>
linux后台运行程序
查看>>
win7 vs2012/2013 编译boost 1.55
查看>>
IIS7如何显示详细错误信息
查看>>
ViewPager切换动画PageTransformer使用
查看>>
coco2d-x 基于视口的地图设计
查看>>
C++文件读写详解(ofstream,ifstream,fstream)
查看>>
Android打包常见错误之Export aborted because fatal lint errors were found
查看>>
Tar打包、压缩与解压缩到指定目录的方法
查看>>
新手如何学习 jQuery?
查看>>
配置spring上下文
查看>>
Python异步IO --- 轻松管理10k+并发连接
查看>>
mysql-python模块编译问题解决
查看>>
java 中getDeclaredFields() 与getFields() 的区别
查看>>