HDU 5059 Harry And Biological Teacher
链接: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<pair<int,int> > V[N];
int ans[N];
map<int,int> 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<SZ(V[i]);j++)
{
int k=V[i][j].first;
int id=V[i][j].second;
if(mp.count(k))
{
ans[id]=mp[k];
continue;
}
SAM *p=head;
int t,tmp=0,cur=0;
for(t=start[k];s[t];t++)
{
int x=get(s[t]);
if(p->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]);
}
}
HDU 5059 Harry And Biological Teacher的更多相关文章
- HDU 5069 Harry And Biological Teacher(AC自动机+线段树)
题意 给定 \(n\) 个字符串,\(m\) 个询问,每次询问 \(a\) 字符串的后缀和 \(b\) 字符串的前缀最多能匹配多长. \(1\leq n,m \leq 10^5\) 思路 多串匹配,考 ...
- hdu 5894 hannnnah_j’s Biological Test 组合数学
传送门:hdu 5894 hannnnah_j’s Biological Test 题目大意:n个座位,m个学生,使每个学生的间隔至少为k个座位 组合中的插空法 思路:每个学生先去掉k个空位间隔,剩下 ...
- HDU 5066 Harry And Physical Teacher(物理题)
HDU 5066 Harry And Physical Teacher 思路:利用物理里面的动量守恒公式.因为保证小车质量远大于小球.所以能够把小车质量当成无穷大带进去,得到答案为2 * v0 - v ...
- HDU 5059 Help him(细节)
HDU 5059 Help him 题目链接 直接用字符串去比較就可以,先推断原数字正确不对,然后写一个推断函数,注意细节,然后注意判掉空串情况 代码: #include <cstdio> ...
- HDU 5894 hannnnah_j’s Biological Test【组合数学】
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5894 题意: 一个圆桌上有$n$个不同的位置,$m$个相同的人安排到这$n$个位置上,要求两人相邻的 ...
- BestCoder12 1002.Help him(hdu 5059) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5059 题目意思:就是输入一行不多于 100 的字符串(除了'\n' 和 '\r' 的任意字符),问是否 ...
- hdu 5059 简单字符串处理
http://acm.hdu.edu.cn/showproblem.php?pid=5059 确定输入的数是否在(a,b)内 简单字符串处理 #include <cstdio> #incl ...
- HDU 5059 Help him(简单模拟题)
http://acm.hdu.edu.cn/showproblem.php?pid=5059 题目大意: 给定一个字符串,如果这个字符串是一个整数,并且这个整数在[a,b]的范围之内(包括a,b),那 ...
- hdu 5066 Harry And Physical Teacher(Bestcoder Round #14)
Harry And Physical Teacher Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
随机推荐
- 夺命雷公狗---DEDECMS----28dedecms浏览次数的完成
在页面里显示每部影视作品的浏览量,显示方法如下所示: 首先我们要在内容模板文件里增加显示区: 然后到后保存下文章页的内容页的模版,然后去看下对我们的样式有没有什么影响: 看到这里我们就已经成功一点点噢 ...
- 关于VS 中 HttpHandler 的设置 500.23
前一段时间在讲 HttpHandler 的过程中遇到一些问题,在此分享一下. 使用VS2012 添加HttpHandler后,在web.config配置的节点如下: <?xml version= ...
- 项目中empty遇到的一个问题
搜索传参时,数据能获取到,搜索结果不是根据参数得出的,在定义搜索条件时因为empty引起的一个问题,键为0的值没有获取到, 记住:!empty 已经把0排除了
- android 百度地图定位开发2
先下载了示例代码 进行配置(可查看开发 指南 Hello BaiDuMap) 第一步:创建并配置工程(具体方法参见工程配置部分的介绍): 第二步:在AndroidManifest中添加开发密钥.所需权 ...
- android 学习随笔二(读写文件)
在android读写文件 RAM:运行内存,相当于电脑的内存 ROM:内部存储空间,相当电脑硬盘,android手机必须有的 SD卡:外部存储空间,相当电脑的移动硬盘,不是必须的.手机如果内置16G存 ...
- ubuntu支持shh远程连接记录
打开终端输入sudo apt-get update更新软件库 在输入sudo apt-get install openssh-server下载ssh sudo /etc/init.d/ssh rest ...
- 使用git和github托管个人项目
1. 安装 cygwin 和 cygwin 下的 git , 测试 git 命令可用; 参考: https://cygwin.com/install.html 2. 注册 github 账号: ...
- codereview
http://www.cnblogs.com/wenhx/p/How-We-Code-Review.htmlhttp://www.cnblogs.com/mindwind/p/5639008.html ...
- uploadify3.2.1加载时,报NetworkError 404 Not Found或NetworkError forbidden错误
我用的uploadify的版本是3.2.1 在打开配置了uploadify的页面的时候,什么操作都没有,仅仅是打开了页面,在火狐里可以看到一行报错信息,我的uploadify页面 在"/项目 ...
- Mac下使用Automator实现截屏编辑保存
以前在Windows下使用百度或者搜狗输入法的截图工具很方便.❶快捷键(Alt+X,我设置的是这个),❷选择区域,❸编辑所选区域,包括添加文字,线条框框,调色,❹点击『✔️』选择保存位置,修改文件名保 ...