思路倒是不难,但是这题卡常啊 ~

code:

#include <bits/stdc++.h>
#define N 2000004
#define M 1000005
#define SIZE 2000005
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
vector<int>G[SIZE];
int n,m,tim,cnt,tot;
char str[SIZE],tmp[SIZE],t1[SIZE],t2[SIZE];
int st[N],ed[N],dfn[N],ch[SIZE][26],ba[SIZE],size[SIZE],ou[SIZE],rt[SIZE],coun[SIZE],trans[SIZE][26];
inline int newnode() { return ++cnt; }
void insert_trie(int l,int r,int id)
{
int now=0;
for(int i=l;i<=r;++i)
{
if(!ch[now][str[i]-'a']) ch[now][str[i]-'a']=++tot;
now=ch[now][str[i]-'a'];
}
G[now].push_back(id);
}
void dfs(int u)
{
dfn[u]=++tim, ba[tim]=u, size[u]=1;
for(int i=0;i<26;++i) if(ch[u][i]) dfs(ch[u][i]),size[u]+=size[ch[u][i]];
ou[u]=tim;
}
void Insert(int id,int pre,int &pos)
{
int i,j,r=ed[id],l=st[id];
int now=pos=newnode();
for(i=r;i>=l;--i)
{
for(j=0;j<26;++j) trans[now][j]=trans[pre][j];
trans[now][str[i]-'a']=newnode();
pre=trans[pre][str[i]-'a'];
now=trans[now][str[i]-'a'];
coun[now]=coun[pre]+1;
}
}
int main()
{
// setIO("input");
int i,j;
scanf("%d",&n);
for(i=1;i<=n;++i)
{
ed[i]=strlen(str+1);
st[i]=strlen(str+1)+1;
scanf("%s",tmp+1);
int len=strlen(tmp+1);
for(j=1;j<=len;++j) str[++ed[i]]=tmp[j];
}
for(i=1;i<=n;++i) insert_trie(st[i],ed[i],i);
dfs(0);
for(i=1;i<=tim;++i)
{
rt[i]=rt[i-1];
for(j=0;j<(int)G[ba[i]].size();++j) Insert(G[ba[i]][j],rt[i],rt[i]);
}
scanf("%d",&m);
int lastans=0;
while(m--)
{
scanf("%s%s",t1+1,t2+1);
int len1=strlen(t1+1),len2=strlen(t2+1),now=0;
for(j=1;j<=len1;++j) t1[j]='a'+(t1[j]-'a'+lastans)%26;
for(j=1;j<=len2;++j) t2[j]='a'+(t2[j]-'a'+lastans)%26;
for(j=1;j<=len1;++j) now=ch[now][t1[j]-'a'];
if(!now) lastans=0,printf("0\n");
else
{
int re=0,l=rt[dfn[now]-1],r=rt[ou[now]];
for(j=len2;j>=1;--j)
{
l=trans[l][t2[j]-'a'];
r=trans[r][t2[j]-'a'];
}
printf("%d\n",lastans=coun[r]-coun[l]);
}
}
return 0;
}

  

BZOJ 4212: 神牛的养成计划 可持久化trie+trie的更多相关文章

  1. BZOJ 4212: 神牛的养成计划

    4212: 神牛的养成计划 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 142  Solved: 30[Submit][Status][Discus ...

  2. BZOJ.4212.神牛的养成计划(Trie 可持久化Trie)

    BZOJ 为啥hzw的题也是权限题啊 考虑能够匹配\(s1\)这一前缀的串有哪些性质.对所有串排序,能发现可以匹配\(s1\)的是一段区间,可以建一棵\(Trie\)求出来,设为\([l,r]\). ...

  3. 【BZOJ-4212】神牛的养成计划 Trie树 + 可持久化Trie树

    4212: 神牛的养成计划 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 136  Solved: 27[Submit][Status][Discus ...

  4. 【BZOJ4212】神牛的养成计划 Trie树+可持久化Trie树

    [BZOJ4212]神牛的养成计划 Description Hzwer成功培育出神牛细胞,可最终培育出的生物体却让他大失所望...... 后来,他从某同校女神 牛处知道,原来他培育的细胞发生了基因突变 ...

  5. [BZOJ4212]神牛的养成计划

    [BZOJ4212]神牛的养成计划 试题描述 Hzwer 成功培育出神牛细胞,可最终培育出的生物体却让他大失所望...... 后来,他从某同校女神 牛处知道,原来他培育的细胞发生了基因突变,原先决定神 ...

  6. 【bzoj4212】神牛的养成计划

    Portal --> bzoj4212 Description ​ 给你\(n\)个字符串,接下来有\(m\)个询问,每个询问由两个给定的字符串\(s_1\)和\(s_2\)组成,对于每个询问输 ...

  7. BZOJ4212 神牛的养成计划 (字典树,bitset)

    题面 Description Hzwer成功培育出神牛细胞,可最终培育出的生物体却让他大失所望- 后来,他从某同校女神 牛处知道,原来他培育的细胞发生了基因突变,原先决定神牛特征的基因序列都被破坏了, ...

  8. BZOJ第1页养成计划

    嗯,用这篇博客当一个目录,方便自己和学弟(妹?)们查阅.不定期更新. BZOJ1000   BZOJ1001   BZOJ1002   BZOJ1003   BZOJ1004   BZOJ1005   ...

  9. BZOJ第7页养成计划

    嗯,用这篇博客当一个目录,方便自己和学弟(妹?)们查阅.不定期更新. BZOJ1600   BZOJ1601   BZOJ1602   BZOJ1603   BZOJ1604   BZOJ1605   ...

随机推荐

  1. JS实现简单的图片透明度循环变化(渐变)

    找了好多,都是由100到0就结束了,到头来自己魔改,以下就是源码. div中加入img,js添加函数,完事(调用),取名后面加个1是为了避免冲突 <!DOCTYPE HTML> <h ...

  2. centos7 挂载未分配的硬盘空间

    =============================================== 2019/7/28_第1次修改                       ccb_warlock == ...

  3. 关于ElasticSearch的堆内存设置与优化

    1.什么是堆内存?Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象.在 Java 中,堆被划分成两个不同的区域:- 新生代 ( Young ).- 老年代 ( Ol ...

  4. Java 获取客服端ip地址

    Java 获取客服端ip地址 /** * <html> * <body> * <P> Copyright 1994 JsonInternational</p& ...

  5. 阿里巴巴 Java 开发手册 (十二)安全规约

    1. [强制]隶属于用户个人的页面或者功能必须进行权限控制校验. 说明:防止没有做水平权限校验就可随意访问.修改.删除别人的数据,比如查看他人的私信 内容.修改他人的订单. 2. [强制]用户敏感数据 ...

  6. 从实践到原理,带你参透 gRPC

    gRPC 在 Go 语言中大放异彩,越来越多的小伙伴在使用,最近也在公司安利了一波,希望这一篇文章能带你一览 gRPC 的巧妙之处,本文篇幅比较长,请做好阅读准备.本文目录如下: 简述 gRPC 是一 ...

  7. 2019 完美世界java面试笔试题 (含面试题解析)

    本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.完美世界等公司offer,岗位是Java后端开发,最终选择去了完美世界. 面试了很多家公司,感觉大部分公司考察的点 ...

  8. springboot中modbus使用

    pom.xml配置: false true ias-snapshots Infinite Automation Snapshot Repository true false ias-releases ...

  9. Celery:Optimizing

    参考文档:http://docs.celeryproject.org/en/latest/userguide/optimizing.html#guide-optimizing

  10. Yii2通过curl调用json-rpc接口

    Yii2可以通过json-rpc为前端提供接口数据,通常情况睛会使用异步的形式调用接口,有时也会使用curl调用接口数据. 一.异步调用json-rpc接口 $.ajax({ type: 'POST' ...