博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 5059 Harry And Biological Teacher
阅读量:7042 次
发布时间:2019-06-28

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

链接:http://acm.hdu.edu.cn/showproblem.php?pid=5069

题意:给出n个串,m个询问,每个询问(u,v),求u的一个最长后缀是v的前缀。

思路:离线。将关于u的后缀的查询放在一起,然后将u插入后缀自动机。对于每个v跑一遍即可。

struct SAM{    SAM *son[4],*pre;    int len;	int ok;	void init()	{		clr(son,0);		pre=0;		ok=0;	}};SAM sam[N],*head,*last;int cnt;void initSam(){    head=last=&sam[0];	head->init();    cnt=1;}int get(char x){	if(x=='A') return 0;	if(x=='T') return 1;	if(x=='G') return 2;	return 3;}void insert(int x){    SAM *p=&sam[cnt++],*u=last;	p->init();    p->len=last->len+1;    last=p;    for(;u&&!u->son[x];u=u->pre) u->son[x]=p;    if(!u) p->pre=head;    else if(u->son[x]->len==u->len+1) p->pre=u->son[x];    else    {        SAM *r=&sam[cnt++],*q=u->son[x];        *r=*q; r->len=u->len+1;        p->pre=q->pre=r;        for(;u&&u->son[x]==q;u=u->pre) u->son[x]=r;    }}char s[N*2];int cur;int start[N],len[N];vector
> V[N];int ans[N];map
mp;int n,m;int main(){// FFF; while(scanf("%d%d",&n,&m)!=-1) { cur=0; int i; for(i=1;i<=n;i++) { scanf("%s",s+cur); start[i]=cur; len[i]=strlen(s+cur); cur+=len[i]+3; } for(i=1;i<=m;i++) { int u,v; scanf("%d%d",&u,&v); V[u].pb(MP(v,i)); } for(i=1;i<=n;i++) if(SZ(V[i])>0) { int j; initSam(); for(j=start[i];s[j];j++) insert(get(s[j])); SAM *p=last; while(p!=NULL) p->ok=1,p=p->pre; mp.clear(); for(j=0;j
son[x]) { cur++; p=p->son[x]; if(p->ok) tmp=max(tmp,cur); } else break; } mp[k]=tmp; ans[id]=tmp; } V[i].clear(); } for(i=1;i<=m;i++) printf("%d\n",ans[i]); }}

 

转载地址:http://rwhal.baihongyu.com/

你可能感兴趣的文章
Hybris UI的Route(路由)实现
查看>>
小程序开发之一(使用fly进行http封装)
查看>>
freebsd 镜像重新挂载数据盘
查看>>
Canvas基础知识(一)
查看>>
图鸭发布图片压缩TNG ,将节省55%带宽
查看>>
一个基于Vue.js2的图片浏览组件img-vuer
查看>>
yii2-wx / 微信的服务端验证
查看>>
学习笔记CB007:分词、命名实体识别、词性标注、句法分析树
查看>>
分析用户的地理位置信息
查看>>
React原理探索- @providesModule 模块系统
查看>>
SpringCloud微服务实战笔记
查看>>
git操作
查看>>
python开发时几种安全验证的实现
查看>>
MvnForum源码环境配置
查看>>
【Java并发编程的艺术】第二章读书笔记之原子操作
查看>>
JS设计模式-策略模式
查看>>
SegmentFault 社区访谈 | Linxz:只会写 CSS 不会写 JS 的“伪”前端
查看>>
log4net 普通文件、数据库日志
查看>>
算法学习——DP篇
查看>>
Springboot 之 引入Thymeleaf
查看>>