题目链接:hdu_5790_Prefix

题意:

给你n个字符串,字符串总长度不超过10W,然后给你一个区间,问你这个区间的字符串不相同的前缀有多少个。

题解:

由于z与上一个答案有关,所以强制在线,区间询问可以用主席树搞搞。

不同前缀的话,我们可以用一个trie来记录每一个节点的最晚出现时间,也就代表了这个前缀最晚出现的时间,然后保存到对应的主席树中。

这样就转换为询问区间不大于l的数有多少个。

 #include<bits/stdc++.h>
#define F(i,a,b) for(int i=a;i<=b;i++)
using namespace std; const int N=1e5+;
char s[N];
int root[N],tot,n,q;
struct node{int l,r,sum;}T[*N]; void update(int &x,int y,int pos,int l=,int r=n)
{
T[++tot]=T[y],T[tot].sum++,x=tot;
if(l==r)return;
int m=l+r>>;
if(pos<=m)update(T[x].l,T[y].l,pos,l,m);
else update(T[x].r,T[y].r,pos,m+,r);
} int query(int x,int y,int k,int l=,int r=n)
{
if(l==r)return T[x].sum-T[y].sum;
int m=l+r>>;
if(k<=m)return query(T[x].l,T[y].l,k,l,m);
else return T[T[x].l].sum-T[T[y].l].sum+query(T[x].r,T[y].r,k,m+,r);
} struct Trie{
int tr[N][],tot,mx[N];
void nd(){mx[++tot]=,memset(tr[tot],,sizeof(tr[tot]));}
void init(){tot=-,nd();}
void insert(char *s,int time)
{
int t1=root[time-],t2;
for(int i=,x=;s[i]!='\0';i++)
{
if(!tr[x][s[i]-'a'])
{
nd(),update(t2,t1,);
t1=t2,tr[x][s[i]-'a']=tot,mx[tot]=time,x=tot;
}
else update(t2,t1,mx[x=tr[x][s[i]-'a']]+),t1=t2,mx[x]=time;
}
root[time]=t1;
}
}trie; void init(){tot=;trie.init();} int main()
{
while(~scanf("%d",&n))
{
init();
F(i,,n)scanf("%s",s),trie.insert(s,i);
scanf("%d",&q);
int l,r,z=;
F(i,,q)
{
scanf("%d%d",&l,&r);
l=(z+l)%n+,r=(z+r)%n+;
if(l>r)l^=r,r^=l,l^=r;
printf("%d\n",z=query(root[r],root[l-],l));
}
}
return ;
}

hdu_5790_Prefix(trie+主席树)的更多相关文章

  1. 【BZOJ3439】 Kpm的MC密码 (TRIE+主席树)

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

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

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

  3. bzoj 3439 Kpm的MC密码(Trie+dfs序+主席树)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3439 [题意] 给定若干串,问一个串的作为其后缀的给定串集合中的第k小. [思路] 如 ...

  4. 【HDU - 5790 】Prefix(主席树+Trie树)

    BUPT2017 wintertraining(15) #7C 题意 求[min((Z+L)%N,(Z+R)%N)+1,max((Z+L)%N,(Z+R)%N)+1]中不同前缀的个数,Z是上次询问的结 ...

  5. BZOJ-3439:Kpm的MC密码(Trie+DFS序+主席树)

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

  6. BZOJ 3439: Kpm的MC密码 (trie+dfs序主席树)

    题意 略 分析 把串倒过来插进trietrietrie上, 那么一个串的kpmkpmkpm串就是这个串在trietrietrie上对应的结点的子树下面的所有字符串. 那么像 BZOJ 3551/354 ...

  7. 4.24 省选模拟赛 欧珀瑞特 主席树 可持久化trie树

    很容易的一道题目.大概.不过我空间计算失误MLE了 我草草的计算了一下没想到GG了. 关键的是 我学了一个dalao的空间回收的方法 但是弄巧成拙了. 题目没有明确指出 在任意时刻数组长度为有限制什么 ...

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

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

  9. 【BZOJ4571】美味(主席树)

    [BZOJ4571]美味(主席树) 题面 Description 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1≤i≤n).有 m 位顾客,第 i 位顾客的期 望值为 ...

随机推荐

  1. java系统参数

    package com.test; import java.sql.SQLException; import java.util.Properties; import com.mchange.v2.c ...

  2. android 开发心得杂记

    1.Android周刊关注. 2.4季Android性能优化典范 胡凯 http://mp.weixin.qq.com/s?__biz=MzA4NTQwNDcyMA==&mid=4021354 ...

  3. JSON 和 JSONP 两兄弟

    项目中遇到这个新事物,转一篇不错的总结,原文 如今ajax威风凛凛 但说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决? 这两个问题目前都有不同 ...

  4. 自动生成 Makefile (automake/autoconf 入门)

    作为Linux 下的程序开发人员,大家一定都遇到过Makefile ,用make 命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile ,如果要想写出一个符合自由软件 ...

  5. trove instance service 总结

    def create(self, req, body, tenant_id): # TODO(hub-cap): turn this into middleware LOG.info(_LI(&quo ...

  6. 【XML】document.createEvent的使用方法

    <aclass="comment-mod"onclick="alert('ss')"href="#">评论</a> ...

  7. 加速Android Studio的Gradle构建速度

    在利用Android Studio做项目时,发现随着项目内资源的逐渐增多(或者项目创建时间太过久远,而又未经常打开),Android Studio的build速度也越来越慢.(P.S.在做我的CSGO ...

  8. 显示hibernate的sql语句

    <property name="show_sql">true</property> <property name="format_sql&q ...

  9. innodb更改行格式,系统盘占用急剧升高

    #大表引擎修改后,数据量较myisam引擎表大很多,对存储的行格式修改后,数据量减小. #备库修改时,由于服务器时间较早,系统盘20G,突然收到/磁盘空间占比89%的报警,立即将修改中断,恢复正常 # ...

  10. ACE Socket Wrapper Facade

    ACE Socket Wrapper Facade 1:Socket API 1.1 IPC(进程间通信) IPC分为本地IPC(同一计算机上的不同进程)和远程IPC(网络互联的不同计算机),本地IP ...