博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 6191 可持久化trie||线段树套trie||trie启发式合并
阅读量:5098 次
发布时间:2019-06-13

本文共 2027 字,大约阅读时间需要 6 分钟。

题意:一个树,q次询问,求xi xor u的子树的max值

思路:考虑可以直接dfs,映射到数轴上,然后就是裸的可持久化trie了。。时间复杂度nlogn,同理nlognlogn可以线段树套trie(这个题没按这个写。。应该可以?参考51nod1295,第一次写可持久化trie就是树套树水过去的。。)同理,如果多个log时间复杂度可以就可以暴力启发式合并。。

可持久化trie代码:

#include 
#define PB push_back#define MEM(x) memset(x,0,sizeof(x));using namespace std;char tmp[33];void tr(int x){ tmp[32]='\0'; for(int i=31;i>=0;i--){ tmp[i]=((x&1)+'0'); x>>=1; }}struct Trie_Persistent{ const static int LetterSize = 2; const static int TrieSize = 40 * ( 1e5 + 50); int tot; struct node{ int ptr[LetterSize]; int cnt[LetterSize]; }tree[TrieSize]; inline int GetLetterIdx(int c){return c - '0';} int zinsert(const char * str ,int f){ int len = strlen( str ); int res = tot++; tree[res] = tree[f]; int cur = res; for(int i = 0 ; i < len ; ++ i){ int idx = GetLetterIdx( str[i] ); int p = tot ++ ; tree[cur].cnt[idx] ++ ; tree[cur].ptr[idx] = p; f = tree[f].ptr[idx]; tree[p] = tree[f]; cur = tree[cur].ptr[idx]; } return res; } int zfind(const char * str , int l ,int r){ int len = strlen(str); int ret=0; for(int i = 0 ; i < len ; ++ i){ int idx = (GetLetterIdx(str[i])); int cnt = tree[r].cnt[idx^1] - tree[l].cnt[idx^1]; if(cnt==0){ l = tree[l].ptr[idx]; r = tree[r].ptr[idx]; } else{ ret|=(1<<(31-i)); l = tree[l].ptr[idx^1]; r = tree[r].ptr[idx^1]; } } return ret; } void init(){ tot = 1; for(int i = 0 ; i < LetterSize ; ++ i) tree[0].ptr[i] = 0 , tree[0].cnt[i] = 0; }}trie;const int maxn=1e6+7;int a[maxn],R[maxn],L[maxn],tim,n,q,x,y;int root[maxn];vector
e[maxn];void dfs(int x){ L[x]=tim; for(int i=0;i

转载于:https://www.cnblogs.com/zhangxianlong/p/10672489.html

你可能感兴趣的文章
Pair Project 初体验(By Cuilin Lan & Xiao Fang)
查看>>
IOS使用mkdir创建目录
查看>>
冒泡排序实例
查看>>
my code review
查看>>
Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)
查看>>
[Luogu1216][USACO1.5]数字三角形 Number Triangles
查看>>
张云飞 201771010143 《面对对象程序设计(java)》第十四周学习总结 第十三组
查看>>
2019 蓝桥杯省赛 A 组模拟赛(一)-忽明忽暗
查看>>
mysql数据库中导入txt文本数据的方法
查看>>
JavaScriptSerializer的实现-常用JsonHelper类
查看>>
Mahout0.9的安装与测试
查看>>
DropDownList在GridView编辑时设置默认选项
查看>>
function pointer demo in C language
查看>>
JavaScript小笔记
查看>>
文章翻页英文单词分割问题解决方案
查看>>
201_Qt5.3.2Code
查看>>
ScriptableObject 对象化的运用
查看>>
scrapy中cookie处理
查看>>
mysql-5.7.10-winx64 安装
查看>>
C#-WebService基础01
查看>>