题意:一个序列(n<3e5),m个查询,每次序列所有的数亦或x,问这个序列的mex(mex定义是最小没有出现过的非负整数),保留每一次的更改

题解:首先要知道mex怎么求,把每一个数分解为二进制,按高位到低位进行建一颗二叉树,可以o(logn)查询到mex

其次要知道异或有结合率,也就是求一个前缀就可以了

分解每次查询的数,从高位到低位遍历,遍历到该为为bit,判断sum[(t<<1)+bit]这棵树有没有装满,装满的话就答案就在另一棵树

#include <bits/stdc++.h>
#define ll long long
#define maxn 300100
int a[maxn], n, m, sum[1<<20];
using namespace std;
void build(){for(int i=0;i<n;i++){bitset<19>bit(a[i]);int t = 1;for(int i=18;i>=0;i--){if(bit[i] == 0) t = t*2;else t =t*2+1;}sum[t] = 1;}for(int i=(1<<20)-1;i>=1;i--)sum[i>>1] += sum[i];
}
int query(int temp){bitset<19>bit(temp);int t = 1, ans = 0, cnt;for(int i=18;i>=0;i--){cnt = (1<<i);ans = ans*2;if(bit[i] == 0){if(sum[t<<1] == cnt) t = t<<1|1, ans++;else t = t<<1;}else{if(sum[t<<1|1] == cnt) t = t<<1, ans++;else t = t<<1|1;}}return ans;
}
int main(){scanf("%d%d", &n, &m);for(int i=0;i<n;i++) scanf("%d", &a[i]);build();int temp = 0;while(m--){scanf("%d", &n);temp ^= n;printf("%d\n", query(temp));}return 0;
}

转载于:https://www.cnblogs.com/Noevon/p/7460915.html

Codeforce842D Vitya and Strange Lesson相关推荐

  1. Codeforces Round #430 D. Vitya and Strange Lesson

    Today at the lesson Vitya learned a very interesting function - mex. Mex of a sequence of numbers is ...

  2. Vitya and Strange Lesson (01字典树)

    题意:给定一组数,然后对所有的数进行异或操作m次异或操作,问你每次操作后,没有出现过的最小的非负整数 题解: 首先需要一个性质(ab)c=a(bc); 所以我们没有必要对于所有的数进行异或操作. 我们 ...

  3. 【Codeforces Round #430 (Div. 2) D】Vitya and Strange Lesson

    [链接]点击打开链接 [题意] 给出一个数组,每次操作将整个数组亦或一个数x,问得到的数组的结果中的mex.mex表示为自然数中第一个没有出现过的数. [题解] 异或的效果是可以累加的,所以不用每次都 ...

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

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

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

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

  6. SCAU-春季训练-不应该啊(怎么这么菜。。。)

    2021/3/14 春季训练2(难度div2d) 反思:(赛前,看什么crt,赛时满脑子都是线性方程组,....................................) 最近表现都不太好.. ...

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

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

  8. (译)对利物浦来说杰拉德仍适用吗? is Steven Gerrard good for Liverpool?

    The Question: is Steven Gerrard good for Liverpool? | Jonathan Wilson   作者:Jonathan Wilson 知名足球记者,桑德 ...

  9. Lesson 18 Electric currents in modern art 内容鉴赏

    Lesson 18 Electric currents in modern art 1. Modern sculpture rarely surprises us any more. rarely表否 ...

  10. 新概念英语(第二册)复习(原文及全文翻译)——Lesson 41 - Lesson 50

    Lesson 41 - Do you call that a hat? 'Do you call that a hat?' I said to my wife. 'You needn't be so ...

最新文章

  1. Visual Studio 快捷键 转载
  2. 无极*压缩 之7-Zip!
  3. ORACLE SQL调优之执行计划与隐藏参数_complex_view_merging
  4. mysql003操作表DDL
  5. C# 无法识别的转义序列
  6. 计算机 会议录用率 统计
  7. 【QT学习之路】Charts的简单使用
  8. 十六进制转字符串 java_JAVA十六进制与字符串的转换方法
  9. 使用jQuery美化英雄联盟
  10. GmSSL 国密MS2/SM3/SM4/SM9/ZUC/SSL密码工具箱
  11. 怎么把mov格式转换成mp4?
  12. Debian11新装系统美化
  13. 隐私保护和数据安全:区块链的隐私问题、零钞:基于zkSNARK的完美混币池、Hawk:保护合约数据私密性、Coco框架、Baby Zoe
  14. 信息抽取之实体消歧,统一
  15. Linux开机无网络连接解决方案
  16. GMap.net在winform中调用高德地图
  17. python安装/pycharm破解与安装
  18. izone成员_IZONE成员经历介绍,简介
  19. ModbusRTU的几种常用功能码介绍及使用
  20. mysql model怎么用_【原创】小灰灰自行封装mysql操作的Model方法 | 小灰灰博客

热门文章

  1. HTTP、HTTP2、HTTPS、SPDY等的理解及在spring-boot中的使用
  2. j2ee 简单网站搭建:(十一)ckeditor 控件使用入门
  3. Lua5.1 升级 Lua5.3 升级 小结
  4. ln -s 一定要用绝对路径
  5. 报表统计(六) 访问数据库
  6. sqlserver 函数手记
  7. Oracle数据反向恢复
  8. linux jvm启动过程,Linux操作系统启动过程详解
  9. 2.Linux下C++操作MongoDB
  10. docker MySQL-错误:2059-Authentication plugin ‘caching_sha2_password‘ cannot be loaded