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

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. 【LEETCODE】69、动态规划,easy,medium级别,题目:198、139、221

    package y2019.Algorithm.dynamicprogramming.easy; /** * @ProjectName: cutter-point * @Package: y2019. ...

  2. Linux RedHat 7 配置本地 YUM源

    尽管RPM安装方法能够帮助用户查询软件相关的依赖关系,但是还是需要安装人员自己来解决,而且有些大型软件可能与数十个程序都有依赖关系,在这种情况下安装软件事件非常痛苦和耗费事件的事情,而Yum软件仓库可 ...

  3. 一个爬虫的demo,requests,beatuifulsoup使用的

    爬虫的demo,requests,beatuifulsoup import os,re import requests import random import time from bs4 impor ...

  4. jQuery实现图片上传

    $('input[type="file"]').change(function(event) { var currentTarget = event.currentTarget; ...

  5. .python3基础之“术语表(1)”

    1.注释: 行首有一特殊标志符号运行时告知编程忽略此行:使代码更易于阅读. 例如: #这是一个注释 print("hello world") #print() 方法用于打印输出,p ...

  6. 对于flex布局的使用心得

    弹性盒子flex: 对于客户端的布局非常有用,不管是平均分配space-around这个属性还是两端对齐space-betwee在页面布局的时候都会有很好的表现. 对于部分内容区域中,具有很多大致内容 ...

  7. Building Objective-C static libraries with categories

    Q: How do I fix "selector not recognized" runtime exceptions when trying to use category m ...

  8. 【RAC】 RAC For W2K8R2 安装--grid的安装(四)

    [RAC] RAC For W2K8R2 安装--grid的安装(四) 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学 ...

  9. echarts 如何设置热力图点的大小

    series: [{ name: 'AQI', type: 'heatmap', coordinateSystem: 'geo', blurSize: 10, pointSize: 10, // 设置 ...

  10. c语言实现基本的数据结构(二) 链表(包括链表的三种简单排序算法)

    #include "stdafx.h" #include <stdlib.h> //创建一个节点,data为value,指向NULL Node* Create(int ...