• 可持久化trie树


    脑补出来的一个东西,不知道别人是怎么实现的……
    自己也还没有用写的代码交过题……不过把想法和大佬说了,应该是正确的。

    例题:

    一个数列,每次查询[l, r]内的数中取一个数和给定值xor后的最大值。

    解法:

    如果没有区间限制,那么直接将所有数都插入trie树就可以了,但是这里需要指定区间的,所以不能直接处理。
    因此对于trie树上的每个点,我们记录下包括这个点在内的子树中一共有多少结束节点。
    然后每插入一个点相当于对结束节点的单点修改,用类似于主席树的方式插入即可。
    对于区间[1, l - 1]和[1, r]的同一个位置的节点,如果2个点的值相差大于0,那么说明这个区间中有数经过了这个节点,说明这个节点是存在的。
    因此我们就可以知道这个区间内的trie树长什么样了。
    然后直接跑就行了。

  • 相关阅读:
    ScrollView 字典
    centos 6.x 安装redis
    Linux 添加epel源
    Linux 关于解压
    Linux 删除文件夹
    Linux sz rz
    让div 实现 input效果
    解决js浮点数计算bug
    键盘绑定事件和焦点处理
    npm的镜像替换成淘宝
  • 原文地址:https://www.cnblogs.com/ww3113306/p/10434238.html
Copyright © 2020-2023  润新知