首页 > TAG信息列表 > Vasiliy
CF706D Vasiliy's Multiset
题目大意 有 \(q\) 次操作和一个集合 \(A\),开始时集合中只有一个数 \(0\),下面有三种类型的操作: + x,把 \(x\) 插入集合 \(A\)。 - x,把 \(x\) 从集合 \(A\) 中删去,保证 \(x\) 已存在于集合 \(A\) 中。 ? x,给一个数 \(x\) 在集合 A 中找一个 \(y\) 使得 \(x \operatorname{xor} y\)CF706D Vasiliy's Multiset(字典树的删除)
link 思路: 求异或的最大值容易想到01字典树,只需要再维护删除操作就好。 加一个\(a\)数组记录一下有多少个节点经过了这个点,删除的时候如果这是最后一个经过该点的节点,就删除他的父节点向下指的指针。用map维护一下每个数出现的次数,字典树只维护种类。 注意要先将0插入字典树,集合里练习赛23
A. Fancy Fence Emuskald needs a fence around his farm, but he is too lazy to build it himself. So he purchased a fence-building robot. Emuskald需要用栅栏围起来,他的农场,但他太懒,构建它自己。所以他买了一个建栅栏机器人。 He wants the fence to be a regular poVasiliy's Multiset CodeForces - 706D
原题链接 Trie+位运算 和前面题一样标记下删除的路径即可 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 const int N = 200010; 6 int idx,son[N*32][2],cnt[N*32]; 7 void insert_t(int x) 8 { 9 int p = 0; 10