[note]可持久化Trie
可持久化Trie
参考可持久化线段树的思想,修改的时候先直接复制,再对需要修改的点新建节点
可持久化Trie也是同样的做法,假设现在需要在原本Trie的基础上插入一个字符串
先把上个Trie的对应节点信息复制过来,对\(son[ch]\)新建节点
void insert(int x,int y,char*st){
	int l=strlen(st);
	for(int i=0;i<l;i++){
		int k=st[i]-'a';t[x].ch[k]=++tot;//新建
		x=t[x].ch[k];y=t[y].ch[k];
		t[x]=t[y];t[x].v++;//复制并更新
	}
}
查询先确定rt,然后类似Trie一样直接把字符串丢进去查即可
int query(int u,char*st){
	int l=strlen(st);
	for(int i=0;i<l;i++){
		int k=st[i]-'a';
		if(!t[u].ch[k])return 0;
		u=t[u].ch[k];
	}
	return t[u].v;
}
或者你二进制Trie是这么查的(下面是在一个区间中查异或max的模板)
int query(int x,int y,int num){
	int res=0;
	for(int i=24;i>=0;i--){
		int k=num>>i&1^1;
		if(t[y].ch[k]-t[x].ch[k]==0)k^=1;//没有能使该位为1的数
		else res|=(1<<i);
		x=t[x].ch[k];y=t[y].ch[k];
	}
	return res;
}
空间=Trie的空间*log
主要是一些字符串或者序列异或的题目中使用,注意到和主席树一样是可减的
常见套路
- 路径问题就维护根到i的前缀Trie,然后把u,v,lca拿出来搞一搞
- 子树问题求dfn,rk,直接按dfn跑一遍前缀Trie,之后当区间处理
[note]可持久化Trie的更多相关文章
- HDU 4757 Tree(可持久化Trie+Tarjan离线LCA)
		Tree Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Others) Total Su ... 
- 【BZOJ4260】 Codechef REBXOR 可持久化Trie
		看到异或就去想前缀和(⊙o⊙) 这个就是正反做一遍最大异或和更新答案 最大异或就是很经典的可持久化Trie,从高到低贪心 WA: val&(1<<(base-1))得到的并不直接是 ... 
- 可持久化Trie & 可持久化平衡树 专题练习
		[xsy1629]可持久化序列 - 可持久化平衡树 http://www.cnblogs.com/Sdchr/p/6258827.html [bzoj4260]REBXOR - Trie 事实上只是一 ... 
- HDU 4757 Tree(可持久化trie)
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4757 题意:给出一棵树,节点有权值.每次询问x到y的路径上与z抑或的最大值. 思路:可持久化trie. ... 
- 可持久化trie 学习总结
		QAQ 以前一直觉得可持久化trie很难,今天强行写了一发觉得还是蛮简单的嘛 自己的模板是自己手写的,写了几道题目并没有出过错误 THUSC的第二题的解法五貌似就是可持久化trie,时间复杂度O(60 ... 
- [BZOJ 4103] [Thu Summer Camp 2015] 异或运算 【可持久化Trie】
		题目链接:BZOJ - 4103 题目分析 THUSC滚粗之后一直没有写这道题,从来没写过可持久化Trie,发现其实和可持久化线段树都是一样的.嗯,有些东西就是明白得太晚. 首先Orz ZYF-ZYF ... 
- bzoj 2741: 【FOTILE模拟赛】L 分塊+可持久化trie
		2741: [FOTILE模拟赛]L Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 1116 Solved: 292[Submit][Status] ... 
- bzoj 2741 分块+可持久化trie
		多个询问l,r,求所有子区间异或和中最大是多少 强制在线 做法: 分块+可持久化trie 1.对于每块的左端点i,预处理出i到任意一个j,()i,j)间所有子区间异或和中最大为多少,复杂度O(\(n\ ... 
- 【BZOJ2741】【块状链表+可持久化trie】FOTILE模拟赛L
		Description FOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和. 即对于一个询问,你需要求出max(Ai xor Ai+1 xor Ai+2 .. ... 
随机推荐
- Android——Activity的生命周期
			一,Demo測试Activity的生命周期 写两个Activity: package com.example.activity_04; import android.os.Bundle; import ... 
- Angular 学习笔记——filter
			<!DOCTYPE html> <html lang="en" ng-app="myApp"> <head> <met ... 
- JAVA经常使用集合框架使用方法具体解释基础篇二之Colletion子接口List
			接着上一篇,接着讲讲集合的知识.上一篇讲了Collection接口.它能够说是集合的祖先了,我们这一篇就说说它的子孙们. 一.Collection的子接口 List:有序(存入和取出的顺序一致).元素 ... 
- How to Handle Exception
- MySQL 5.6.26几种安装包的差别
			http://downloads.mysql.com/archives/community/ 一.MySQL Installer 5.6.26 mysql-installer-community-5. ... 
- UVA - 434 Matty's Blocks
			题意:给你正视和側视图,求最多多少个,最少多少个 思路:贪心的思想.求最少的时候:由于能够想象着移动,尽量让两个视图的重叠.所以我们统计每一个视图不同高度的个数.然后计算.至于的话.就是每次拿正视图的 ... 
- Android  XMPP 即时通讯
			0 http://blog.csdn.net/lnb333666/article/details/7471292 0.1 http://www.cnblogs.com/charley_yang/arc ... 
- Delphi 数据类型列表
			分类 范围 字节 备注 简单类型 序数 整数 Integer -2147483648 .. 2147483647 4 有符号32位 Cardinal 0 .. 4294967295 4 无符号32位 ... 
- 安装Reshaper后Intellisense失效
			安装Reshaper后Intellisense失效或希望用vs2017的Intellisense功能 安装完毕后,IDE 的智能提示(Intellisense)便会默认使用 Resharper 的提示 ... 
- HTML  css样式
			clear: both清除左侧和右侧浮动 status: 变量状态参数,该属性有5个常用值count 表示当前遍历集合的元素个数index 表示当前遍历到集合的第几个元素current 表示当前的集合 ... 
