题意:给定一组数,然后对所有的数进行异或操作m次异或操作,问你每次操作后,没有出现过的最小的非负整数

题解:
首先需要一个性质(ab)c=a(bc);
所以我们没有必要对于所有的数进行异或操作。
我们只需要设一个ans=0,每次用输入进来的数于ans进行异或即可。

其次,我们把没有出现过的数字加入进字典树,这样的话我们从高位到低位寻找与当前ans按位 比较相同的数字,如果不相同那么我们就给 返回值加上当前位的值。最后返回值极为最小mex。

/*Keep on going Never give up*/
//#pragma GCC optimize(3,"Ofast","inline")
#include<bits/stdc++.h>//#define int long long
#define endl '\n'
#define Accepted 0
#define AK main()
#define I_can signed
using namespace std;
const int maxn =1e7+10;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int inf=0x3f3f3f3f;
const ll mod=1e9+7;
using namespace std;int trie[maxn][2];
bool visited[maxn];
int cnt;void ins(int x){int node=0;for(int i=21;i>=0;i--){int t=(x>>i)&1;if(!trie[node][t]) trie[node][t]=++cnt;node=trie[node][t];}return ;
}int ifind(int x){int res=0,node=0;for(int i=21;i>=0;i--){int t=(x>>i)&1;if(trie[node][t]) node=trie[node][t];else{res|=1<<i;node=trie[node][t^1];}}return res;
}signed main()
{//ios::sync_with_stdio(false);int n,m;cin>>n>>m;memset(visited,false,sizeof visited);for(int i=0;i<n;i++){int x;cin>>x;visited[x]=true;}int ans=0;for(int i=0;i<600010;i++){if(!visited[i]){ins(i);}}for(int i=0;i<m;i++){int x;cin>>x;ans^=x;cout<<ifind(ans)<<endl;}return 0;
}

Vitya and Strange Lesson (01字典树)相关推荐

  1. codeforces 842 D. Vitya and Strange Lesson(01字典树+思维+贪心)

    题目链接:http://codeforces.com/contest/842/problem/D 题解:像这种求一段异或什么的都可以考虑用字典树而且mex显然可以利用贪心+01字典树,和线段树差不多就 ...

  2. CodeForeces 842d Vitya and Strange Lesson ——(带lazy标记的01字典树)

    给一个序列,每次操作对这个序列中的所有数异或一个x,问每次操作完以后整个序列的mex值. 做法是去重后构建01字典树,异或x就是对root加一个x的lazy标志,每次pushDown时如果lazy的这 ...

  3. 字典树,01字典树,可持续化01字典树(总结+例题)

    目录 字典树 01字典树 字典树例题: power oj 2390: 查单词 HDU 1671 Phone List HDU 1004Let the Balloon Rise HDU 1075 Wha ...

  4. hdu5296 01字典树

    根据二进制建一棵01字典树,每个节点的答案等于左节点0的个数 * 右节点1的个数 * 2,遍历整棵树就能得到答案. AC代码: #include<cstdio> using namespa ...

  5. Beautiful Subarrays (01字典树 瞎搞)

    题意: 题解: 一看问的是子序列,并且还是异或. 首先想到01字典树,再一看让你求子序列的个数,大致是想让你把这个序列进行前缀异或处理后然后再01字典树上进行操作吧. 假设01字典树往左边是0右边是1 ...

  6. 奶牛异或(01字典树)

    题意: 让你找一个连续区间异或和最大,如果有相同的,则输出断点较小的. 题解: 01字典树,利用前缀和的思想进行求解,我们在插入前缀的同时,也在不断的更新最大值. 我们查询当前 二进制字符串与已经插入 ...

  7. hdu-4825(01字典树)

    Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) Total ...

  8. zcmu-1783(01字典树)

    1783: 秋实大哥与快餐店 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 78  Solved: 12 [Submit][Status][Web B ...

  9. HDU4825 Xor Sum 01字典树(Tire Tree)

    Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) Total ...

  10. 字典树-01字典树基础

    字典树-01字典树 什么是字典树? 字典树,又叫前缀树,Trie树,通常被用作字符串匹配. 它的实现原理是什么? 先建立一颗树,对于这棵树上每个节点i与其后继节点间的连线,都有存入一个字符. 对于存图 ...

最新文章

  1. linux实现命令解释器_想在Win10上安装Linux,只需一个命令即可实现
  2. 二十五、MongoDB 索引 和 explain 的使用
  3. Wodpress模板
  4. “手把手教你学linux驱动开发”OK6410系列之02---虚拟字符设备
  5. 架构设计工作笔记003---中台概念_业务中台_数据中台_技术中台
  6. Mybatis编写初始化Dao代码
  7. 《敏捷无敌》(8)之橄榄球与软件开发
  8. http请求转为https请求 java_如何将Javaweb工程的访问协议由http改为https及通过域名访问?...
  9. 2、Charm Bracelet( poj 3624)简单0-1背包
  10. JavaGUI--模拟QQ聊天界面私聊群聊
  11. 任务栏的图标变成白色
  12. IntelliJ IDEA常用插件介绍和配置
  13. 中州韵输入法 linux 小鹤双拼,在deepin 15.10系统fcitx框架下添加rime小鹤双拼的方法...
  14. 【记录读论文时遇到的一些算法2】—— Occupancy Grid Map
  15. vue3 provide 与 inject 用法
  16. docker安装konga系统
  17. 加一度推荐超实用的7大拓词工具
  18. three.js 画一个旋转的立方体
  19. 从《西游降魔篇》里感悟人生
  20. 服务器磁盘空间占满了排查原因

热门文章

  1. 自然语言处理(NLP)之词义消歧(WSD)的简介与实现
  2. 信息工程大学806自主命题2020年回忆版真题2020年信息工程大学,初试806回忆版
  3. 医 系统 springboot搜索到的spring boot 的javaweb项目
  4. 浏览器刷新再次升级!不同浏览器窗口
  5. 如何通俗的理解面向对象编程
  6. 面向高精度领域的视觉伺服算法汇总
  7. Liferay7 BPM门户开发之11: Activiti工作流程开发的一些统一规则和实现原理(完整版)...
  8. 调整JVM堆内存解决OutOfMemoryError
  9. 数据库like匹配的实现猜测
  10. 通过memcached来实现对tomcat集群中Session的共享策略 .