摘要: 利用可持久化Trie树实现范围内取值异或最大值 如果标题没有表达清楚意思,可以看这里的题干: 然后根据异或的性质,异或一个数两次相当于没有异或,那么我们可以维护一个异或前缀和 有了异或前缀和之后我们就可以通过前缀和的形式O(1)提取出任意的一个异或区间出来 然后就可以把题目转化成这样的形式 求max 阅读全文
posted @ 2018-08-22 20:05 静听风吟。 阅读(681) 评论(0) 推荐(0) 编辑
摘要: 利用01字典树查询最大异或值 01字典树的是只含有0和1两种字符的字典树,在使用它的时候,把若干数字转成二进制后插入其中 在查询树中的哪个数字和给定数字有最大异或值的时候,从根开始贪心查询就ok了 HDU4825是一道裸题:给出n个数和m次询问,每次询问给出一个数x,问在n个数中哪个数与x异或值最大 阅读全文
posted @ 2018-08-22 19:18 静听风吟。 阅读(562) 评论(0) 推荐(0) 编辑
摘要: 首先吐槽一下,我刚开始找了一篇看起来很不错的模板代码,然后学习了一遍,然后直接WA 我发现博主的维护rnd的那里出毛病了,我改了之后最后一个点WA 然后发现,它没有copy结点,也就是没有可持久化,只是一颗无旋Treap而已。。 不说了,感谢引导我走向正确的作者:http://www.cnblogs 阅读全文
posted @ 2018-08-22 18:22 静听风吟。 阅读(406) 评论(0) 推荐(0) 编辑
摘要: POJ1182 有三种动物,告诉A类吃B类,B类吃C类,C类吃A类 告诉你X和Y是同类或者是X吃Y,然后问给出的信息有几条和前面相违背 在这里我们用三个并查集来维护,把每一种动物拆成三类(因为我不知道它到底属于哪一个类别) 以下图片转自:https://blog.csdn.net/backforwa 阅读全文
posted @ 2018-08-22 16:33 静听风吟。 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 在基础并查集上改良,让并查集支持回滚到历史版本 这里介绍一下普通并查集的两种优化,一个是路径压缩,一个是按秩合并(启发式合并) 路径压缩是在find上动手脚,让查询经过的点都直接与根相连,这样下次再查的时候复杂度就可以是O(1) 按秩合并是在union上动手脚,合并时让小集合拼接到较大集合上面,集合 阅读全文
posted @ 2018-08-22 15:54 静听风吟。 阅读(201) 评论(0) 推荐(0) 编辑
摘要: ETT可以称为欧拉游览树,它是一种和欧拉序有关的动态树(LCT是解决动态树问题的一种方案,这是另一种) dfs序和欧拉序是把树问题转化到区间问题上然后再用数据结构去维护的利器 通过借助这两种形式能够完成子树的查询和修改,这是LCT所不能胜任的工作 所谓的ETT就是通过动态维护欧拉序来实现动态树 它能 阅读全文
posted @ 2018-08-22 14:56 静听风吟。 阅读(826) 评论(0) 推荐(1) 编辑