
异或和
林黛玉倒拔垂杨柳
你我最后也平凡到自命不凡
展开
-
【CF706D】Vasiliy‘s Multiset (Trie字典树求异或+添加 删除 查询操作)
Vasiliy’s Multiset 题目大意:有三种类型的查询:“+ x” - 添加一个整数 X。“ - x” - 删除一次整数 X。它保证至少有一个 X 存在于查询前的集合中。“?x” - 给定整数 X 并且需要计算该值和一个整数Y的按位异或(也称为XOR)的最大值这是一个允许相等元素的集合。解题思路:如果没有删除的话就是字典树求异或和模板题了,而现在需要有删除操作,我们新开一个index数组记录一下已有的节点即可(不能开bool数组,因为集合中可能有重复元素),添加就+1,删除-1,查原创 2020-07-29 12:24:23 · 209 阅读 · 0 评论 -
Xor Sum (字典树求异或)
Xor Sum (字典树求异或)题目大意:给出n个数,然后m次查询,问每次要查询的数与这n个数异或最大的值是哪个解题思路:很显然这是一道字典树求异或的模板题,是POJ 3764的简化版,详细见我的另一篇博客。Code:#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int MAXN = 100100;int t[MAXN*33][3],tot =原创 2020-07-29 11:10:43 · 522 阅读 · 0 评论 -
POJ 3764 The xor-longest Path (字典树求最大异或 + 链式前向星存图)
The xor-longest Path题目大意:给定一颗N个节点的树,树上的每一条边都有一个权值。从数中选择两个点x和y,把从x到y的路径上的所有边权xor(异或)起来,得到的结果最大是多少?解题思路:因为 a ^ b==(a ^ c) ^ (b ^ c), 即两个点到根的异或和异或一下就是这两个点之间的异或和, 这条性质,我们可以记录下当前节点到根节点的异或和,然后转成01串插入到trie树里面,最后按照贪心思想匹配的时候尽可能的匹配与当前位不同的即可。Code:#include<ios原创 2020-07-28 22:27:37 · 233 阅读 · 0 评论