Codeforces Round 779 (Div. 2) D2. 388535(思维题 二进制性质/trie树上最大最小异或)

题目

t(t<=1e5)组样例,每次给定l,r(0<=l<r<2^17)

和r-l+1个数ai,新序列是被[l,r]这些数异或上同一个x得到的,

求出x,有多个输出任意一个即可

思路来源

官方题解

洛谷题解

Educational Codeforces Round 157 (Rated for Div. 2) D. XOR Construction (思维题)-CSDN博客

心得

Educational Codeforces Round 157 (Rated for Div. 2) 是该题的减弱版,感觉一模一样

题解1(性质)

注意到,若a^b=1,则(a^x)^(b^x)=1恒成立

如果l是偶数,r是奇数,那么x的末尾是0或1均可,因为总可以将ai和ai^1两两配对

此时可以将末位除掉,规模递减到原来一半,继续递归

否则,当我们将ai和ai^1两两配对时,

由于原序列末位所构成序列,形如01010或者10101,必有一个无法配对

l%2==0时,r无法配对,否则l无法配对,记原来无法配对的数为ans

遍历这r-l+1个数,找到无法配对的那一个ai,ans^ai=x成立,输出x即可

题解2(trie树)

r-l+1个数中,肯定有一个ai是l^x得到的,那么令每个数再异或l,

即令bi=ai^l,必有一个bi是等于x的,

将每个ai插入到trie上,枚举bi,

若存在一个bi,min(bi^trie)=l,max(bi^trie)=r,则bi即为x所求

其中,min(bi^trie)表示取trie上一个数和bi异或能得到的最小值,

max表示取trie上一个数和bi异或能得到的最大值

代码1(性质)

#include <bits/stdc++.h>
using namespace std;const int N = 2e5 + 5;
int a[N], l, r; 
set <int> s, s2;void solve() {int mul = 1;s.clear();cin >> l >> r; for (int i = l; i <= r; ++i) {cin >> a[i];s.insert(a[i]);}for (; l % 2 == 0 && r % 2 == 1; l >>= 1, r >>= 1, mul <<= 1) {s2.clear();for (int i: s) s2.insert(i >> 1);swap(s, s2);   }int ans;if (l % 2 == 0) ans = r;else ans = l;for (int i: s) {if (s.find(i ^ 1) == s.end()) {int cur = i ^ ans;bool f = true;for (int j : s)f &= ((cur ^ j) >= l && (cur ^ j) <= r);if (f) {ans = cur;break;}}}cout << ans * mul << '\n';
}int main() {ios_base::sync_with_stdio(false);cin.tie(NULL);int t; cin >> t;while (t--) solve();return 0;
}

代码2(trie树)

#include<bits/stdc++.h>
#define N 1000005
#define int long long
using namespace std;
int T,l,r,a[N],cnt,trie[N][30],b[N];
void insert(int sum){int now=0;for(int i=17;i>=0;i--){bool tmp=(1<<i)&sum;if(!trie[now][tmp])trie[now][tmp]=++cnt;now=trie[now][tmp];}
}
int Max(int sum){int now=0,res=0;for(int i=17;i>=0;i--){bool tmp=(1<<i)&sum;if(!trie[now][tmp^1])now=trie[now][tmp];else now=trie[now][tmp^1],res+=(1<<i);}return res;
}
int Min(int sum){int now=0,res=0;for(int i=17;i>=0;i--){bool tmp=(1<<i)&sum;if(!trie[now][tmp])now=trie[now][tmp^1],res+=(1<<i);else now=trie[now][tmp];}return res;
}
signed main() {cin>>T;while(T--){cin>>l>>r;for(int i=0;i<=cnt;i++)trie[i][0]=trie[i][1]=0;cnt=0;for(int i=l;i<=r;i++)cin>>a[i],b[i]=a[i]^l;for(int i=l;i<=r;i++)insert(a[i]);for(int i=l;i<=r;i++){if(Max(b[i])==r&&Min(b[i])==l){cout<<b[i]<<endl;break;}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/623133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统使用超详细(十)~vi/vim命令①

vi/vim命令有很多&#xff0c;其实只有少数的用法对于我们日常工作中起到了很大帮助&#xff0c;但是既然我选择梳理Linux的学习笔记&#xff0c;那么一定全力把自己的理解和学习笔记的内容认真整理汇总&#xff0c;内容或许有错误&#xff0c;还请发现的C友们发现了及时指出。…

CTFhub-phpinfo

CTFhub-Web-信息泄露-“phpinfo” 题目信息 解题过程 ctrlF搜索关键字…

探索数据之美:深入Seaborn的数据可视化艺术与技巧【第26篇—python:Seaborn】

文章目录 1. 引言2. Seaborn基础2.1 安装和环境设置2.2 常用数据可视化函数2.3 设置样式和颜色主题 3. 数据准备与导入3.1 使用Pandas库加载和处理数据3.2 数据清理和缺失值处理 4. Seaborn中的常见图表4.1 折线图和散点图&#xff1a;展示趋势和变量关系4.2 条形图和箱线图&am…

树莓派4B-Python-使用PCA9685控制舵机云台+跟随人脸转动

系列文章 树莓派4B-Python-控制舵机树莓派-Pico控制舵机树莓派4B-Python-使用PCA9685控制舵机云台跟随人脸转动&#xff08;本文章&#xff09; 目录 系列文章前言一、SG90s舵机是什么&#xff1f;二、PCA9685与舵机信号线的接线图三、控制SG90s云台&#xff08;也可用来测试舵…

MongoDB Compass 的教程

第一步&#xff1a;建立连接 点击Save&Connect 增加数据库&#xff1a; 填写数据库名字和文档名字并点击Create Database 删除文档&#xff1a; 创建文档&#xff1a; 插入文档数据 {Id:1001,name:"cyl",age:21} 插入成功&#xff1a; 更改原有数据 删除原有数据…

ACM论文LaTeX模板解析(二)| documentclass设置

本文收录于专栏&#xff1a;ACM 论文 LaTeX模板解析&#xff0c;本专栏将会围绕ACM 论文 LaTeX模板解析持续更新。欢迎点赞收藏关注&#xff01; 文章目录 要使用documentclass类&#xff0c;请在文件的开头中写明&#xff1a; \documentclass[⟨options⟩]{acmart}有几个选项…

SpringBoot-项目部署

SpringBoot项目部署可以通过将项目打成可执行的jar包或war包来实现&#xff0c;也可以使用容器化技术如Docker将项目部署到云平台中。在部署时需要注意配置文件的位置和启动参数的设置&#xff0c;同时确保目标环境中的Java版本与项目所需的Java版本一致。部署完成后&#xff0…

【Nuxt3】Nuxt3脚手架nuxi安装项目和项目目录介绍

简言 最近学了Nuxt3,并使用它创建了自己的小网站。记录下学习到的nuxt3内容。 Nuxt3官网 Nuxt 是一个免费的开源框架&#xff0c;可通过直观、可扩展的方式使用 Vue.js 创建类型安全、高性能、生产级的全栈 Web 应用程序和网站。 支持SSR、SPA、建立静态网站&#xff0c;也可以…

如何在BTC生态中创造独特的数字资产?bitget教程

BRC-20通证是什么&#xff1f; 听说了吗&#xff1f;BRC-20通证在比特币上搞事情啦&#xff01;它们不依赖智能合约&#xff0c;直接在比特币的最小单位上动手脚。这就像在用最小的积木搭房子&#xff0c;太神奇了&#xff01;虽然现在还在实验阶段&#xff0c;但已经有很多人…

12AOP面向切面编程/GoF之代理模式

先看一个例子&#xff1a; 声明一个接口&#xff1a; // - * / 运算的标准接口! public interface Calculator {int add(int i, int j);int sub(int i, int j);int mul(int i, int j);int div(int i, int j); }实现该接口&#xff1a; package com.sunsplanter.prox…

流星全自动网页生成系统重构版源码

流星全自动网页生成系统重构版源码分享&#xff0c;所有模板经过精心审核与修改&#xff0c;完美兼容小屏手机大屏手机&#xff0c;以及各种平板端、电脑端和360浏览器、谷歌浏览器、火狐浏览器等等各大浏览器显示。 为用户使用方便考虑&#xff0c;全自动网页制作系统无需繁琐…

错误处理(基于ESP-IDF)

主要参考资料 B站Up主孤独的二进制《错误处理 - 乐鑫 ESP32 物联网开发框架 ESP-IDF 开发入门》 ESP-IDF编程指南>API指南>错误消息: https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1/esp32s3/api-guides/error-handling.html ESP-IDF编程指南>API指南>严…

二、QT下载、安装及问题解决(windows系统)

本章节最重要的一点&#xff1a;安装时&#xff0c;路径中不能有中文&#xff0c;切记&#xff0c;否则QT不能正常运行。 下载两种途径&#xff1a; 1、官网下载&#xff0c;慢且不好访问&#xff1b; 2、国内一些大学网站的镜像&#xff0c;下载比较快&#xff0c;但是可能…

Android中的anr定位指导与建议

1.背景 8月份安卓出现了一次直播间卡死(ANR)问题&#xff0c;且由于排查难度较大&#xff0c;持续了较长时间。本文针对如何快速定位安卓端出现ANR问题进行总结和探讨. 这里大致补充一下当时的情况,当时看到情景的是从某一个特定的场景下进入直播间后整个直播间界面立刻就卡住…

lenovo联想笔记本电脑拯救者Legion Y7000 2019 PG0(81T0)原装出厂Windows10系统

链接&#xff1a;https://pan.baidu.com/s/1fn0aStc4sfAfgyOKtMiCCA?pwdas1l 提取码&#xff1a;as1l 联想拯救者原厂Win10系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;…

更换为mainwindow.ui更新工程架构

文章目录 前言一、新建带mainwindow.ui的工程1.新建工程2. 添加工程模块添加opencv的库3.添加资源3.1工程上添加资源3.2引用资源 4.添加曲线文件4.1 复制关键文件到新工程4.2 新进显示曲线的ui带.h的为了方面名字取一样4.3添加曲线显示控件4.4 添加工具 5. 添加曲线.h文件内容6…

MySQL之单表查询

素材&#xff1a; 表名&#xff1a;worker-- 表中字段均为中文&#xff0c;比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varchar(10) NO…

数据库结构文档生成(通过PDMReader)

将数据库的表结构生成数据库结构文档有三种方法&#xff1a; 1、通过 PDMReader生成文档&#xff1b; 2、使用EZDML 工具生成&#xff08;下载地址&#xff1a;EZDML - 下载&#xff09;&#xff1b; 3、使用SCREW 插件&#xff0c;通过java代码生成。 本文章先介绍通过PDM…

Python入门0基础学习笔记

1.编程之前 在编写代码之前&#xff0c;还有两件事需要做&#xff1a; 安装 Python 解释器&#xff1a;计算机是没法直接读懂 Python 代码的&#xff0c;需要一个解释器作为中间的翻译&#xff0c;把代码转换成字节码之后再执行。 Python 是翻译一行执行一行。一般说的安装 …

【开源】基于JAVA语言的康复中心管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员模块 三、系统展示四、核心代码4.1 查询康复护理4.2 新增康复训练4.3 查询房间4.4 查询来访4.5 新增用药 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的康复中…