寒假每日一题W2D1——选数异或

news2024/11/15 15:42:31

题目描述

给定一个长度为 n 的数列 A1,A2,⋅⋅⋅,An 和一个非负整数 x,给定 m 次查询,每次询问能否从某个区间 [l,r] 中选择两个数使得他们的异或等于 x。

输入输出格式及数据范围

在这里插入图片描述

输入输出样例

在这里插入图片描述

思路

①对于两个数的异或值为x,可以化简为,在区间L和R之间,寻找一个数b,使得b = a ^ x,此处我们不妨规定b < a,指的是b的下标小于a

②但是本题的数据范围是1e5,如果使用①的方法思考,那么时间复杂度为O(n2),会超时,我们需要将时间复杂度控制在O(nlogn)之内,因此需要一种优化方法。

③对于区间L~R,我们不妨令①中的a为ai,这样我们总是需要寻找一个在ai左侧的b,b的下标需要大于等于L,如果存在这样的b,就可以说区间中存在满足题意的数对。令f[i]为b的下标,即如果f[i] ≥ L,则可以输出“yes”,否则输出“no”。

④但是按照③中的思路维护f[i],是在区间L和R中进行维护,L和R的自由度之和为O(n2),仍然不能满足题意,因此还需要进一步的优化。值得注意的是,由于我们认为约定b < ab的下标小于a,即b在a的左侧寻找),因此对于ai,如果a的下标i<L,那么f[i]自然会小于L,f存的是b的下标,b的位置一定在a的左侧,更不可能处于区间L和R之中。因此可以优化为在1~R维护数组f,对于ai,由于其左侧可能有多个f[j]满足大于L(但是这个f[j]可能不是由ai贡献的,而是位置比ai靠左的另一个数贡献的),因此可以另外维护数组g,来存储位置i左侧做靠右的满足题意条件的下标,即最大的f[j]

⑤综上所述,如果g[R] >= L,即R的左侧存在一个ai,使得f[ai] ≥ L,则输出“yes”,否则输出“no”。

代码

  • 注:数组last记录的是输入的数字a的下标。
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 1e5 + 5, maxm = (1<<20) + 5;
int last[maxn] = {0}, g[maxm] = {0};
int n, m, x;
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>n>>m>>x;
	for(int i=1;i<=n;i++){
		int a;
		cin>>a;
		g[i] = max(g[i-1], last[a^x]);
		last[a] = i;
	}
	for(int i=1;i<=m;i++){
		int l, r;
		cin>>l>>r;
		if(g[r] >= l)	cout<<"yes"<<endl;
		else			cout<<"no"<<endl;
	}
	return 0;
}

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

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

相关文章

RHCE第二天之chrony服务部署详解

文章目录一、chrony服务器介绍二、安装与配置三、chrony服务部署四、chronyc 的常见命令五、chronyc sources 输出结果解析一、chrony服务器介绍 ①Chrony是一个开源自由的网络时间协议 NTP 的客户端和服务器软软件。它能让计算机保持系统时钟与时钟服务器&#xff08;NTP&…

谈谈如何在简历筛选中尽可能 “存活下来“, 如何在面试过程中 “游刃有余“

本文只是个人学习总结出来的技巧, 仅供参考 如果有不认同的地方, 也不必太较真, 因人而异 目录 1. 为什么要做简历 1.2 好简历与差简历的区别 2. 如何做一份好的简历 2.1 知己知彼 2.2 构思内容 2.3 模板的选择 2.4 填充内容 2.5 不断的更新迭代 2.6 其他注意事项 3…

Wondershare Recovery - 万兴数据恢复专家,恢复你 Mac 上的重要文件

Wondershare Recovery - 万兴数据恢复专家&#xff0c;恢复你 Mac 上的重要文件 Wondershare Recoverit 是恢复被删除文件最有效的软件之一。计算机用户面临的一个主要问题是失去机密信息。我们可能是误删除了数据和文件&#xff0c;或者可能是由于病毒袭击、操作系统故障或硬盘…

LaoCat带你认识容器与镜像(二【二章】)

系列二章二小节&#xff0c;发现概念性的知识看得人并不多&#xff0c;csdn的一篇解决问题的博文&#xff0c;却涨粉近400&#xff0c;有点意思~ 本章内容 操作Docker容器 本文实操全部基于Ubuntu 20.04 同样&#xff0c;容器也是Docker重要的核心成员之一&#xff0c;Docker容…

如何与沃尔格林Walgreens建立EDI连接?

沃尔格林Walgreens从1901年芝加哥一个家庭作坊式的小店开始&#xff0c;经历了百年沧桑&#xff0c;如今已经拥有4000多家连锁药店&#xff0c;在自己100多年的发展历史中年年赢利&#xff0c;创造了连续100多年的赢利神话。 与沃尔格林Walgreens建立合作&#xff0c;一个重要环…

C++:函数指针进阶(三):Lambda函数详解(二)

一&#xff1a;Lambda表达式概述 Lambda表达式是现代C在C11和更高版本中的一个新语法糖&#xff0c;在C11&#xff0c;C14&#xff0c;C17和C20中Lambda表达的内容还在不断更新。Lambda表达式&#xff08;也称为lambda函数&#xff09;是在调用或作为函数参数传递的位置处定义…

记自己开发的淘宝客优惠券

目录 1.首页 1.1详情 1.2口令 1.3分类 1.4搜索 1.5个人中心 2.API开发教程 2.1什么是淘宝客 组成模式 2.2API申请 2.3SDK下载 2.3后台管理 闲暇时间浏览网站时&#xff0c;看到有关淘宝优惠券推广的文章&#xff0c;就想着能不能自己也做一个微信小程序。 但是&…

论文投稿指南——中文核心期刊推荐(化学 2)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

Java里一个线程调用了Thread.interrupt()到底意味着什么?

interrupted()是Java提供的一种中断机制&#xff0c;要把中断搞清楚&#xff0c;还是得先系统性了解下什么是中断机制。 什么是中断&#xff1f; 在Java中没有办法立即停止一条线程&#xff0c;然而停止线程却显得尤为重要&#xff0c;如取消一个耗时操作。因此&#xff0c;Ja…

zig语言代替C语言进行裸机开发的尝试-2023年笔记

接触rust的时候&#xff0c;无意中认识了zig&#xff0c;目前版本是zig 0.10.0&#xff0c;还没有正式的1.0版本。 初步使用的感受&#xff1a; 1). 用zig写出的代码更防崩&#xff0c;不会像C那样出现很多内存非法访问的情况 (比如这些情形&#xff1a;栈保护、整数溢出、…

pyqt5中QGraphicsView弹出菜单

QPainter与Graphics View 架构的区别PyQt5 提供了两种绘图方法。一种是使用 QPainter 类在 QWidget 类提供的画布上画图&#xff0c;可以 绘制点、线、圆等各种基本形状&#xff0c;从而组成自己需要的图形。所有界面组件都是 QWidget 的子类&#xff0c; 界面上的按钮、编辑框…

74、【哈希表】leetcode——18. 四数之和(C++版本)

题目描述 原题链接&#xff1a;18. 四数之和 解题思路 思路与三数之和&#xff1a;15. 三数之和&#xff0c;区别之处在于&#xff1a; 1、多一层for循环&#xff0c;用于多加一个数。 四数之和就是在三数之和多加一个数&#xff0c;用前两个数相加&#xff0c;后面两个数继…

Hadoop之MapReduce

一、概述 MapReduce 核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的 分布式运算程序&#xff0c;并发运行在一个 Hadoop 集群上。 1、优缺点&#xff1a;优点&#xff1a;1&#xff09;MapReduce 易于编程 它简单的实现一些接口&#xff0c;就可以完成一个…

(day2)自学java综合练习

目录 1.卖飞机票 2.找质数 3.开发验证码 4.数组元素的复制 5.评委打分 6.数字加密 7.数字解密 8.抢红包 9.模拟双色球 10.二维数组 1.卖飞机票 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。按照如下规则计算机票价格&#xff1…

推荐两个好用的虚拟机、SSH 终端开源工具(Virtual Box、WindTerm)

笔者最近因一些变故&#xff0c;加上阳了&#xff0c;停更了一段时间&#xff0c;并提前回老家过年了。因并没有带笔记本电脑回去&#xff0c;故在折腾了一番老家电脑后&#xff0c;选择拥抱开源&#xff0c;使用一些开源的工具&#xff0c;而非习惯的 VMware Workstation 和 S…

Python3,区区10行代码,批量把图片插入Excel指定单元格中,省下时间去烫头发。

这里写目录标题1、引言2、代码实战2.1 代码示例2.2 遇到问题及处理方案2.2.1 遇到问题2.2.2 解决方案3、总结1、引言 小屌丝&#xff1a;鱼哥&#xff0c; 想请教你个问题。 小鱼&#xff1a;啥问题呢&#xff1f; 小屌丝&#xff1a;我想把图片插入到excel里面 小鱼&#xff…

AVS3变换之ISP和ISTS

ISP&#xff08;Implicit Selected Transform&#xff09;是AVS3中新增的针对intra块的变换工具&#xff0c;IST对intra块提供了两种可分离的变换核&#xff0c;编码器根据RDO选择最优的变换核&#xff0c;但是对于选中的变换核不在码流中传输其索引&#xff0c;而是将其索引隐…

今天给大家介绍一篇医院医疗管理系统的设计与实现(源码+论文)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

Java开发学习(三十七)----SpringBoot多环境配置及配置文件分类

一、多环境配置 在工作中&#xff0c;对于开发环境、测试环境、生产环境的配置肯定都不相同&#xff0c;比如我们开发阶段会在自己的电脑上安装 mysql &#xff0c;连接自己电脑上的 mysql 即可&#xff0c;但是项目开发完毕后要上线就需要该配置&#xff0c;将环境的配置改为…

亚马逊云科技 2022 re:Invent 的几个关键词:数据、云原生端到端、安全

一转眼&#xff0c;又是一年。2022 年云计算行业重要的技术趋势和方向里&#xff0c;亚马逊云科技一年一度的 re:Invent 大会是不可或缺的一环。 今年已经是 re:Invent 大会连续举办的第十一年&#xff0c;和往年一样&#xff0c;亚马逊云科技将一年的重磅技术观察和实践干货悉…