分析:这个题和spoj的d_query是一个题,那个是求一段区间里有多少个不同的数字,这里是统计有多少个不同的前缀

用字典树进行判重,(和查询不同的数字一样)对于每个不同的前缀,只保留它最后一次出现的序号

然后强制在线,用主席树就好了

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long LL;
const int N = 1e5+;
const int mod = 1e9+;
int p[N][],cnt,last[N],n,q;
char s[N];
struct Node{
int l,r,v;
}o[*N];
int root[N],sz;
void add(int &rt,int l,int r,int pos,int t){
o[++sz]=o[rt],rt=sz;
o[rt].v+=t;
if(l==r)return;
int m=(l+r)>>;
if(pos<=m)add(o[rt].l,l,m,pos,t);
else add(o[rt].r,m+,r,pos,t);
}
int query(int rt,int l,int r,int x,int y){
if(x<=l&&r<=y)
return o[rt].v;
int m=(l+r)>>;
int ans=;
if(x<=m)ans+=query(o[rt].l,l,m,x,y);
if(y>m)ans+=query(o[rt].r,m+,r,x,y);
return ans;
}
int newnode(){
++cnt;
memset(p[cnt],-,sizeof(p[cnt]));
return cnt;
}
void insert(int cur){
int now=,tr=root[cur-],len=strlen(s+);
for(int i=;i<=len;++i){
int v=s[i]-'a';
if(p[now][v]==-){
p[now][v]=newnode();
now=p[now][v];
last[now]=cur;
add(tr,,n,cur,);
}
else{
now=p[now][v];
add(tr,,n,last[now],-);
add(tr,,n,cur,);last[now]=cur;
}
}
root[cur]=tr;
}
int main(){
while(~scanf("%d",&n)){
cnt=-;newnode();sz=;
o[].l=o[].r=o[].v=;
for(int i=;i<=n;++i){
scanf("%s",s+);
insert(i);
}
int z=,l,r;
scanf("%d",&q);
while(q--){
scanf("%d%d",&l,&r);
l=(l+z)%n+;r=(r+z)%n+;
if(l>r)swap(l,r);
printf("%d\n",z=query(root[r],,n,l,r));
}
}
return ;
}

HDU5790 Prefix 字典树+主席树的更多相关文章

  1. 线段树简单入门 (含普通线段树, zkw线段树, 主席树)

    线段树简单入门 递归版线段树 线段树的定义 线段树, 顾名思义, 就是每个节点表示一个区间. 线段树通常维护一些区间的值, 例如区间和. 比如, 上图 \([2, 5]\) 区间的和, 为以下区间的和 ...

  2. hdu5790 Prefix(Trie树+主席树)

    Problem Description Alice gets N strings. Now she has Q questions to ask you. For each question, she ...

  3. HDU 5790 Prefix(Hash + 主席树)

    题目链接  Prefix 题意  给定一个字符串序列,求第$l$个字符串到第$r$个字符串之间有多少个不同的前缀 强制在线 考虑$Hash$ 首先把所有前缀都$hash$出来,按顺序组成一个长度不超过 ...

  4. 【BZOJ3439】Kpm的MC密码 trie树+主席树

    Description 背景 想Kpm当年为了防止别人随便进入他的MC,给他的PC设了各种奇怪的密码和验证问题(不要问我他是怎么设的...),于是乎,他现在理所当然地忘记了密码,只能来解答那些神奇的身 ...

  5. 学习笔记--函数式线段树(主席树)(动态维护第K极值(树状数组套主席树))

    函数式线段树..资瓷 区间第K极值查询 似乎不过似乎划分树的效率更优于它,但是如果主席树套树状数组后,可以处理动态的第K极值.即资瓷插入删除,划分树则不同- 那么原理也比较易懂: 建造一棵线段树(权值 ...

  6. bzoj 3545&&3551: [ONTAK2010]Peaks &&加强版 平衡树&&并查集合并树&&主席树

    3545: [ONTAK2010]Peaks Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 635  Solved: 177[Submit][Stat ...

  7. BZOJ 4539: [Hnoi2016]树 [主席树 lca]

    4539: [Hnoi2016]树 题意:不想写.复制模板树的子树,查询两点间距离. *** 终于有一道会做的题了...... 画一画发现可以把每次复制的子树看成一个大点来建一棵树,两点的lca一定在 ...

  8. 线段树(单标记+离散化+扫描线+双标记)+zkw线段树+权值线段树+主席树及一些例题

    “队列进出图上的方向 线段树区间修改求出总量 可持久留下的迹象 我们 俯身欣赏” ----<膜你抄>     线段树很早就会写了,但一直没有总结,所以偶尔重写又会懵逼,所以还是要总结一下. ...

  9. UOJ#218. 【UNR #1】火车管理 线段树 主席树

    原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ218.html 题解 如果我们可以知道每次弹出栈之后新的栈顶是什么,那么我们就可以在一棵区间覆盖.区间求和 ...

随机推荐

  1. 心情记录&考试总结 3.30

    并不知道现在要干什么,本人像是一只大颓狗 Em..怎么说呢,今天考完了一场奇怪的试 准确的说,画风很不正常的试 第一题集体爆零 第二题暴力20分 第三题暴力40分,乱搞有加成 改题的话, 第一题有奇怪 ...

  2. hdu 1978 How many ways

    #include<stdio.h> #include<string.h> #include<algorithm> using namespace std; int ...

  3. activiti5.13 框架 数据库设计说明书

    转载自:http://www.cnblogs.com/llzgzljl/p/3356108.html activiti5.13 框架 数据库设计说明书 1.结构设计 1.1.    逻辑结构设计 Ac ...

  4. jsp是有自己的编译引擎的

    什么是jsp? JSP(Java Server Pages)是指: 在HTML中嵌入Java脚本代码 由应用服务器中的JSP引擎来编译和执行嵌入的Java脚本代码 然后将生成的整个页面信息返回给客户端 ...

  5. JavaWeb项目开发案例精粹-第2章投票系统-001设计

    1.项目结构 2.数据库设计 # MySQL-Front 5.0 (Build 1.0) /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */; /*!40101 SET ...

  6. C#基础练习(使用委托窗体传值)

    主界面: Form1中的代码: namespace _06委托练习_窗体传值 {     public partial class Form1 : Form     {         public ...

  7. Asterisk服务安装配置和启动

    Asterisk服务安装配置和启动 2014年11月4日 11:36 注意: 更新源的重要性 源的地址: http://fffo.blog.163.com/blog/static/2119130682 ...

  8. jquery学习以及下载链接

    jquery学习链接 http://www.w3school.com.cn/jquery/jquery_intro.asp jquery 脚本库下载链接 http://jquery.com/downl ...

  9. typeof和GetType的区别

    http://stackoverflow.com/questions/4537945/what-is-the-difference-of-getting-type-by-using-gettype-a ...

  10. AWS Python SDK boto3中的基本概念与使用方法

    最近在用boto3编写AWS的lamda函数,学习到了boto3中的一些基本概念与使用方法.在此进行总结. 1. boto3提供了两个级别的接口来访问AWS服务:High Level的Resource ...