![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字典树
莫比乌斯灯泡
力争把题解写的好懂,错误之处请评论。
展开
-
HDU4825(字典树)
叔叔传你过去从高位建树,保证亦或值最大,如果某一位在集合里存在不同的数,就选择该分支,否则选择一样的分支#includetypedef long long ll;using namespace std;struct tire{ tire *son[2]; int val; tire() { val=0; son[原创 2018-01-31 16:53:37 · 257 阅读 · 0 评论 -
HDU-4825(数组维护字典树,更节省内存的写法)
叔叔传你过去指针动态分配内存: 数组分配内存: 所以还是用数组嘛,虽然有点抽象,但简单易操作,而且代码短#includetypedef long long ll;using namespace std;#define maxn 2000005#define son 2int ch[maxn][2],sz,val[maxn];//节点编号,字典树节点个数,值vo原创 2018-01-31 17:38:36 · 572 阅读 · 0 评论 -
HDU5536(暴力加字典树)
叔叔传你过去题意:给出一个数列,保证每个数都不相同,让你从中找出 :两个数的和亦或上另外一个数最大的结果,输出这个亦或结果。思路:字典树,建立四个域: ch [u] [2]: 父节点编号为u,字符0或者1代表的那一条边连向哪个节点 sz[maxn]: 经过节点的数字有几个(方便删除) val[maxn]: 存放在每个数的结尾处,方便查询的时候返回,表示该数本身的值原创 2018-02-01 15:52:42 · 319 阅读 · 0 评论