当前位置: 首页 > news >正文

wordpress模板带后台/江苏搜索引擎优化

wordpress模板带后台,江苏搜索引擎优化,dreamweaver制作wap网站教程,天长seo排名【BZOJ3881】[Coci2015]Divljak Description Alice有n个字符串S_1,S_2...S_n,Bob有一个字符串集合T,一开始集合是空的。接下来会发生q个操作,操作有两种形式:“1 P”,Bob往自己的集合里添加了一个字符串P。“2 x”&…

【BZOJ3881】[Coci2015]Divljak

Description

Alice有n个字符串S_1,S_2...S_n,Bob有一个字符串集合T,一开始集合是空的。
接下来会发生q个操作,操作有两种形式:
“1 P”,Bob往自己的集合里添加了一个字符串P。
“2 x”,Alice询问Bob,集合T中有多少个字符串包含串S_x。(我们称串A包含串B,当且仅当B是A的子串)
Bob遇到了困难,需要你的帮助。

Input

第1行,一个数n;
接下来n行,每行一个字符串表示S_i;
下一行,一个数q;
接下来q行,每行一个操作,格式见题目描述。

Output

对于每一个Alice的询问,帮Bob输出答案。

Sample Input

3
a
bc
abc
5
1 abca
2 1
1 bca
2 2
2 3

Sample Output

1
2
1

HINT

【数据范围】
1 <= n,q <= 100000;
Alice和Bob拥有的字符串长度之和各自都不会超过 2000000;
字符串都由小写英文字母组成。

题解:我们先求出fail树,很容易发现当我们在fail树上遍历T_i字符串时,所经过的节点和它的祖先都会被T_i包含,我们只需要将这些点的权值全部+1,但我们并不能只是将每个点到根的路径上的点权全都+1,因为这样可能导致重复计算

所以,我们要解决的问题是如何将这些点到根节点的路径的并集+1,就是求树链的并,具体方法:

将所有经过的点按照DFS序排序,然后求出相邻两点间的LCA

将所有点到根的路径上的点权+1,再讲所有LCA到根的路径上的点权-1

这个可以用树剖+树状数组搞定

#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
#include <algorithm>
using namespace std;
int n,m,tot,cnt;
const int maxn=2000010;
struct node
{int ch[30],fail;
}p[maxn];
int P[maxn],Q[maxn],s[maxn],son[maxn],dep[maxn],to[maxn],head[maxn],next[maxn],top[maxn],siz[maxn];
int v[maxn],vis[maxn],pos[maxn];
queue<int> q;
char str[maxn];
bool cmp(int a,int b)
{return P[a]<P[b];
}
void add(int a,int b)
{to[cnt]=b,next[cnt]=head[a],head[a]=cnt++;
}
void build()
{q.push(1);int i,t,u;while(!q.empty()){u=q.front(),q.pop();for(i=0;i<26;i++){if(!p[u].ch[i])	continue;q.push(p[u].ch[i]);if(u==1){p[p[u].ch[i]].fail=1;continue;}int t=p[u].fail;while(!p[t].ch[i]&&t)	t=p[t].fail;if(t)	p[p[u].ch[i]].fail=p[t].ch[i];else	p[p[u].ch[i]].fail=1;}}
}
void dfs1(int x)
{siz[x]=1;for(int i=head[x];i!=-1;i=next[i]){dep[to[i]]=dep[x]+1;dfs1(to[i]);siz[x]+=siz[to[i]];if(siz[to[i]]>siz[son[x]])	son[x]=to[i];}
}
void dfs2(int x,int tp)
{top[x]=tp,P[x]=++P[0];if(son[x])	dfs2(son[x],tp);for(int i=head[x];i!=-1;i=next[i])if(to[i]!=son[x])dfs2(to[i],to[i]);Q[x]=P[0];
}
int lca(int x,int y)
{while(top[x]!=top[y]){if(dep[top[x]]<dep[top[y]])	swap(x,y);x=p[top[x]].fail;}if(dep[x]<dep[y])	return x;return y;
}
void updata(int x,int val)
{for(int i=x;i<=tot;i+=i&-i)	s[i]+=val;
}
int query(int x)
{int i,ret=0;for(i=x;i;i-=i&-i)	ret+=s[i];return ret;
}
int main()
{scanf("%d",&n);int i,j,a,b,c,u;tot=1;for(i=1;i<=n;i++){scanf("%s",str);u=1,a=strlen(str);for(j=0;j<a;j++){b=str[j]-'a';if(!p[u].ch[b])	p[u].ch[b]=++tot;u=p[u].ch[b];}pos[i]=u;}build();memset(head,-1,sizeof(head));for(i=2;i<=tot;i++)	add(p[i].fail,i);dep[1]=1,dfs1(1),dfs2(1,1);scanf("%d",&m);for(i=1;i<=m;i++){scanf("%d",&c);if(c==1){scanf("%s",str);u=1,a=strlen(str);vis[1]=i,v[v[0]=1]=1;for(j=0;j<a;j++){b=str[j]-'a';while(!p[u].ch[b]&&u!=1)	u=p[u].fail;u=(p[u].ch[b]>0)?p[u].ch[b]:1;if(vis[u]!=i)	vis[u]=i,v[++v[0]]=u;}sort(v+1,v+v[0]+1,cmp);for(j=1;j<=v[0];j++)	updata(P[v[j]],1);for(j=1;j<v[0];j++)	updata(P[lca(v[j],v[j+1])],-1);}if(c==2){scanf("%d",&a);printf("%d\n",query(Q[pos[a]])-query(P[pos[a]]-1));}}return 0;
}

转载于:https://www.cnblogs.com/CQzhangyu/p/6756303.html

http://www.lbrq.cn/news/1332217.html

相关文章:

  • 做网站的集团/seo平台有哪些
  • 企业网站建设进什么科目核算/百度搜索资源平台提交
  • 网站建设 石景山/沈阳关键字优化公司
  • 简述建设一个网站的基本步骤/中国科技新闻网
  • 网站结构图怎么画/seo是如何优化
  • 郑州做网站哪个/万网官网域名查询
  • 百度58网络推广怎么做/提升神马seo关键词自然排名
  • 新手做网站怎么上传系统/成功的网络营销案例ppt
  • 猪八戒网站 怎么做兼职/广州百度seo优化排名
  • 在猪八戒网站如何做兼职/南宁百度快速优化
  • 怎么做转载小说网站/seo研究中心qq群
  • 网站建设优化一体/信息互联网推广
  • 网站加载很慢/怎样注册自己的网站
  • 哪个网站可以做英语语法题/云服务器
  • 视频网站建设的背景简介/外贸推广营销公司
  • 用华为云建立Wordpress网站/长沙网络营销公司排名
  • 电商网站开发的项目描述/百度指数app下载
  • 福田企业网站推广哪个好/济南市最新消息
  • 做校招的网站有哪些/友情手机站
  • 新零售网站建设/如何成为百度广告代理商
  • wordpress淘宝ued/惠州seo关键字优化
  • 怎样可以免费做网站/外包公司是什么意思
  • 后台更新的内容在网站上不显示/青岛seo排名公司
  • 花卉网站建设策划书/优化教程
  • 国务院网站建设标准/友情链接怎么购买
  • 网站后台编辑内容不显示/windows优化工具
  • 桂电做网站的毕设容易过嘛/推广引流方法有哪些推广方法
  • web后端是做什么的/北京网站优化方式
  • 做seo网站优化价格/360竞价推广登录入口
  • 安庆网站建设工作室/网络卖货平台有哪些
  • Hive 创建事务表的方法
  • 云计算-实战 OpenStack 私有云运维:服务部署、安全加固、性能优化、从服务部署到性能调优(含数据库、内核、组件优化)全流程
  • Kubernetes-03:Service
  • 汽车高位制动灯难达 CIE 标准?OAS 光学软件高效优化破局
  • 开源WAF新标杆:雷池SafeLine用语义分析重构网站安全边界
  • 91、23种经典设计模式