Codeforce842D Vitya and Strange Lesson
题意:一个序列(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相关推荐
- 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 ...
- Vitya and Strange Lesson (01字典树)
题意:给定一组数,然后对所有的数进行异或操作m次异或操作,问你每次操作后,没有出现过的最小的非负整数 题解: 首先需要一个性质(ab)c=a(bc); 所以我们没有必要对于所有的数进行异或操作. 我们 ...
- 【Codeforces Round #430 (Div. 2) D】Vitya and Strange Lesson
[链接]点击打开链接 [题意] 给出一个数组,每次操作将整个数组亦或一个数x,问得到的数组的结果中的mex.mex表示为自然数中第一个没有出现过的数. [题解] 异或的效果是可以累加的,所以不用每次都 ...
- codeforces 842 D. Vitya and Strange Lesson(01字典树+思维+贪心)
题目链接:http://codeforces.com/contest/842/problem/D 题解:像这种求一段异或什么的都可以考虑用字典树而且mex显然可以利用贪心+01字典树,和线段树差不多就 ...
- CodeForeces 842d Vitya and Strange Lesson ——(带lazy标记的01字典树)
给一个序列,每次操作对这个序列中的所有数异或一个x,问每次操作完以后整个序列的mex值. 做法是去重后构建01字典树,异或x就是对root加一个x的lazy标志,每次pushDown时如果lazy的这 ...
- SCAU-春季训练-不应该啊(怎么这么菜。。。)
2021/3/14 春季训练2(难度div2d) 反思:(赛前,看什么crt,赛时满脑子都是线性方程组,....................................) 最近表现都不太好.. ...
- 字典树,01字典树,可持续化01字典树(总结+例题)
目录 字典树 01字典树 字典树例题: power oj 2390: 查单词 HDU 1671 Phone List HDU 1004Let the Balloon Rise HDU 1075 Wha ...
- (译)对利物浦来说杰拉德仍适用吗? is Steven Gerrard good for Liverpool?
The Question: is Steven Gerrard good for Liverpool? | Jonathan Wilson 作者:Jonathan Wilson 知名足球记者,桑德 ...
- Lesson 18 Electric currents in modern art 内容鉴赏
Lesson 18 Electric currents in modern art 1. Modern sculpture rarely surprises us any more. rarely表否 ...
- 新概念英语(第二册)复习(原文及全文翻译)——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 ...
最新文章
- Visual Studio 快捷键 转载
- 无极*压缩 之7-Zip!
- ORACLE SQL调优之执行计划与隐藏参数_complex_view_merging
- mysql003操作表DDL
- C# 无法识别的转义序列
- 计算机 会议录用率 统计
- 【QT学习之路】Charts的简单使用
- 十六进制转字符串 java_JAVA十六进制与字符串的转换方法
- 使用jQuery美化英雄联盟
- GmSSL 国密MS2/SM3/SM4/SM9/ZUC/SSL密码工具箱
- 怎么把mov格式转换成mp4?
- Debian11新装系统美化
- 隐私保护和数据安全:区块链的隐私问题、零钞:基于zkSNARK的完美混币池、Hawk:保护合约数据私密性、Coco框架、Baby Zoe
- 信息抽取之实体消歧,统一
- Linux开机无网络连接解决方案
- GMap.net在winform中调用高德地图
- python安装/pycharm破解与安装
- izone成员_IZONE成员经历介绍,简介
- ModbusRTU的几种常用功能码介绍及使用
- mysql model怎么用_【原创】小灰灰自行封装mysql操作的Model方法 | 小灰灰博客
热门文章
- HTTP、HTTP2、HTTPS、SPDY等的理解及在spring-boot中的使用
- j2ee 简单网站搭建:(十一)ckeditor 控件使用入门
- Lua5.1 升级 Lua5.3 升级 小结
- ln -s 一定要用绝对路径
- 报表统计(六) 访问数据库
- sqlserver 函数手记
- Oracle数据反向恢复
- linux jvm启动过程,Linux操作系统启动过程详解
- 2.Linux下C++操作MongoDB
- docker MySQL-错误:2059-Authentication plugin ‘caching_sha2_password‘ cannot be loaded