可持久化Trie树
代码
const int ChSize=;
struct PerTrie
{
int next[maxn*][ChSize];
int id,inf[maxn*];
void init()
{
memset(next[],,sizeof(next[]));
inf[]=;
id=;
}
int GetId(char c){ return c-'a'; }
void Insert(int& rt,int pre,char* S,int x) //插入
{
rt=++id;
inf[rt]=inf[pre]+;
for(int i=;i<ChSize;i++) next[rt][i]=next[pre][i]; //把前面的赋给当前
if(S[x]=='\0') return;
Insert(next[rt][GetId(S[x])],next[pre][GetId(S[x])],S,x+);
}
int Query(int le,int ri,char* S) //查询[le,ri]
{
for(int i=;S[i]!='\0';i++)
{
int s=GetId(S[i]);
le=next[le][s];
ri=next[ri][s];
}
return inf[ri]-inf[le];
}
}PT;
可持久化Trie树的更多相关文章
- 可持久化Trie树初步
		可持久化Trie树和可持久化线段树很像,依次插入信息,通过减法来进行历史版本查询. 2015年11月27日 bzoj3261 最大异或和 我们需要计算 a[p] xor a[p+1] xor ... ... 
- [十二省联考2019]异或粽子——可持久化trie树+堆
		题目链接: [十二省联考2019]异或粽子 求前$k$大异或区间,可以发现$k$比较小,我们考虑找出每个区间. 为了快速得到一个区间的异或和,将原序列做前缀异或和. 对于每个点作为右端点时,我们维护出 ... 
- BZOJ4477[Jsoi2015]字符串树——可持久化trie树
		题目描述 萌萌买了一颗字符串树的种子,春天种下去以后夏天就能长出一棵很大的字符串树.字符串树很奇特,树枝上都密密麻麻写满了字符串,看上去很复杂的样子.[问题描述]字符串树本质上还是一棵树,即N个节点N ... 
- BZOJ5338 [TJOI2018] Xor 【可持久化Trie树】【dfs序】
		题目分析: 很无聊的一道题目.首先区间内单点对应异或值的询问容易想到trie树.由于题目在树上进行,case1将路径分成两段,然后dfs的时候顺便可持久化trie树做询问.case2维护dfs序,对d ... 
- 51nod 1295 XOR key (可持久化Trie树)
		1295 XOR key 题目来源: HackerRank 基准时间限制:1.5 秒 空间限制:262144 KB 分值: 160 难度:6级算法题 给出一个长度为N的正整数数组A,再给出Q个查 ... 
- 【BZOJ-4212】神牛的养成计划       Trie树 + 可持久化Trie树
		4212: 神牛的养成计划 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 136 Solved: 27[Submit][Status][Discus ... 
- 51nod 1295 XOR key | 可持久化Trie树
		51nod 1295 XOR key 这也是很久以前就想做的一道板子题了--学了一点可持久化之后我终于会做这道题了! 给出一个长度为N的正整数数组A,再给出Q个查询,每个查询包括3个数,L, R, X ... 
- 【bzoj2741】[FOTILE模拟赛]L  可持久化Trie树+分块
		题目描述 FOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和. 即对于一个询问,你需要求出max(Ai xor Ai+1 xor Ai+2 ... xor A ... 
- bzoj 3261: 最大异或和 (可持久化trie树)
		3261: 最大异或和 Time Limit: 10 Sec Memory Limit: 512 MB Description 给定一个非负整数序列 {a},初始长度为 N. ... 
- BZOJ4103 [Thu Summer Camp 2015]异或运算  【可持久化trie树】
		题目链接 BZOJ4103 题解 一眼看过去是二维结构,实则未然需要树套树之类的数据结构 区域异或和,就一定是可持久化\(trie\)树 观察数据,\(m\)非常大,而\(n\)和\(p\)比较小,甚 ... 
随机推荐
- Html5 Canvas 实现滚动的图片
			今天一直在找html5 canvas的使用实例.想画一张地图,再画个小车在上面跑.运气好找到了一个大神写的js代码.该代码实现了图片的左右来回滚动,现在粘贴在博客里记录一下: <html> ... 
- c/c++ 复习基础要点01-const指针、指针函数 函数指针、new/delete与malloc/free区别与联系
			1. 引用本身是有指针实现的:引用为只读指针 例子: int d=123; int& e=d; //引用 int * const e=d; //只读指针,e指向d,不可修改e指 ... 
- [RxJS] Handling a Complete Stream with Reduce
			When a stream has completed, you often need to evaluate everything that has happened while the strea ... 
- ORA-01652:无法通过128(在表空间TEMP中)扩展temp段
			在Oracle数据库中进行order by or group by.索引的创建和重创建.distinct操作.union & intersect & minus sort-merge ... 
- wp8模拟器操作键盘
			当前焦点在模拟器上的某一个输入控件上时候, 按pagedown/pageup可以切换是用pc键盘还是模拟器键盘 
- ComboBox绑定数据源时触发SelectedIndexChanged事件的处理办法
			转载:http://blog.sina.com.cn/s/blog_629e606f01014d4b.html ComboBox最经常使用的事件就是SelectedIndexChanged.但在将Co ... 
- iOS_SN_BlueTooth (二)iOS 连接外设的代码实现
			原文:http://www.cocoachina.com/ios/20150917/13456.html?utm_source=tuicool&utm_medium=referral 上一篇文 ... 
- Bootstrap 字形图标(Glyphicons)
			http://w3c.3306.biz/bootstrap/eg/bootstrap--glyphicons-list.html 
- C++智能指针初学小结
			本篇随笔仅作为个人学习<C++ Primer>智能指针一节后的部分小结,抄书严重,伴随个人理解.主要介绍shared_ptr.make_shared.weak_ptr的用法和联系. C++ ... 
- C#限制转换后的double小数点留1位
			glb_timer1WaitSeconds += 0.1; string s = string.Format("{0:f1}", glb_timer1WaitSeconds); 
