蓝桥杯22年第十三届省赛-选数异或|暴力、线性dp

题目链接

5.选数异或 - 蓝桥云课 (lanqiao.cn)

思路:

重要结论:a^b=x可得a^x=b

暴力做法:

每次遍历给定区间的元素,将出现的元素建一个表表示这个数在区间里出现过,同时查这个元素a的a^x是否在表里,出现则区间里能找到一对合法的数。过60%或40%数据。

注意:每次map要清空。

dp做法:

f[i]表示以i为右端点(结尾)的子数组 ,它最近的 能够选出异或为x的一对数字的 左边那个位置 为 f[i](是这个左边位置最近,不是右边位置出现得最近,因为左边位置最近的话右边位置必然在这个左边位置的右边)。

要让一个区间包括这对合法的数,那么就要让这个 区间左端点小于这对数左边数的位置,而右端点大于这对数右边数位置 。而右端点大于这对数右边数位置 这个条件,设这个dp数组的时候 作为前提满足的。 这样就找到了一个边界,如果给的以r为右端点的区间左端点小于f[r],那么 这段区间就包括了至少一对数字能够异或为x,状态转移公式为:

f[i]=max(f[i-1],p[(a[i]^x)]);

要么从前面已经找到的选,要么是自己新产生的(通过异或性质计算:a^b=x可得a^x=b,查map是否前面出现过这个a^x,出现过,就是自己产生的位置) ,

所以需要建一个 哈希表,存每个值对应的最大位置 (建表时如果有几个位置出现相同值,大的位置覆盖小的位置,因为求最近的位置,大的位置肯定更近)

代码:

暴力:

#include<bits/stdc++.h>
#define int long long
using namespace std;const int N=1e5+10;int n,m,x;
int a[N];
unordered_map<int,int> rr;
signed main(){//关同步!!!ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n>>m>>x;for(int i=1;i<=n;i++){cin>>a[i];} while(m--){int l,r;cin>>l>>r;if(l==r) printf("no\n");else{//每次要清零 rr.clear();int i;//如果 a^b=x,那么b^x=a,a^x=b。根据这个性质,在 这个区间里用map记录(注意:每次要清空!!)//一旦当前元素b的 对应 的 b^x=a在map里有记录,说明这个区间能找到异或为x的 for(i=l;i<=r;i++){if(rr.find((a[i]^x))!=rr.end()){printf("yes\n");break;}rr[a[i]]=1;}if(i>r) printf("no\n");}}return 0;
}

dp:

#include<bits/stdc++.h>
#define int long long
using namespace std;const int N=1e5+10;int n,m,x;
int a[N];int f[N];
//注意这个哈希表的范围要根据Ai的大小开
int p[10*N+50000]={0};
signed main(){//关同步!!!ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n>>m>>x;for(int i=1;i<=n;i++){cin>>a[i];} for(int i=1;i<=n;i++){f[i]=max(f[i-1],p[(a[i]^x)]);p[a[i]]=i;}while(m--){int l,r;cin>>l>>r;if(l==r) printf("no\n");else{if(f[r]>=l)printf("yes\n");elseprintf("no\n");}}return 0;
}

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

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

相关文章

uwsgi 配置

uwsgi 官方文档&#xff1a;Python/WSGI 应用快速入门 — uWSGI 2.0 文档 安装uwsgi: pip install uwsgi 在【项目】目录下&#xff0c;manage.py 同级目录创建&#xff1a; myweb_uwsgi.ini 文件 &#xff08;名字随便起&#xff09; myweb_uwsgi.ini 内容配置&#xff…

C语言中的编译和链接

系列文章目录 文章目录 ​编辑 系列文章目录 文章目录 前言 一、 翻译环境和运行环境 二、 翻译环境 2.1 编译 2.1.1 预处理 2.1.2 编译 2.1.2.1 词法分析 : 2.1.2.2 语法分析 2.1.2.3 语义分析 2.1.3 汇编 2.2 链接 三、运行环境 前言 在我们平常的写代码时&#xff0c;我们很…

基于SpringBoot+Vue的健身器材用品网站(源码+文档+部署+讲解)

一.系统概述 随着我国经济的高速发展与人们生活水平的日益提高&#xff0c;人们对生活质量的追求也多种多样。尤其在人们生活节奏不断加快的当下&#xff0c;人们更趋向于足不出户解决各种问题&#xff0c;必录德健身器材用品网展现了其蓬勃生命力和广阔的前景。与此同时&#…

Vue3整合wangEditor(富文本编辑器框架) 以及提供存储渲染方案

目录 概述 Vue3整合wagnEditor 图片的上传 图片的删除 文章存储 文章渲染 概述 实现功能&#xff1a;管理端使用富文本编辑器编写文章内容&#xff0c;将编辑好的文章存入数据库或服务器中&#xff0c;前端应用读取存储的文章内容作展示。 本文章能提供 ①Vue3整合wangEdi…

2024年第十七届“认证杯”数学中国数学建模网络挑战赛B题思路

B题 神经外科手术的定位与导航 人的大脑结构非常复杂,内部交织密布着神经和血管,所以在大脑内做手术具有非常高的精细和复杂程度。例如神经外科的肿瘤切除手术或血肿清除手术,通常需要将颅骨打开一个(或几个)圆形窗口,将病变部位暴露在术野中。但当病变部位较深时,就必…

伤感视频素材哪里找?五大平台助您深情表达

大家好&#xff01;制作视频时&#xff0c;找到合适的伤感视频素材可以极大地增强作品的情感表达。那么&#xff0c;伤感视频素材哪里找呢&#xff1f;今天&#xff0c;我将为大家介绍五个能提供优质伤感视频素材的平台&#xff0c;让您的视频作品更加动人。 蛙学网&#xff0…

2023ICPC网络预选赛 ( 2 ) (2) C.Covering【2-SAT、前后缀虚拟节点区间连边】

C.Covering 题意 给定一个长度为 n n n 的正整数数组 a a a&#xff0c;现在要从中选择一些下标&#xff0c;满足&#xff1a; 对于每个下标 i i i&#xff0c; i i i 和 i − 1 i - 1 i−1 至少 有一个被选对于所有选择的下标&#xff0c;任意两个下标 i , j ( i ≠ j…

Android适配平板屏幕尺寸

一、划分手机和平板 人为判断方法: 大于6英寸的就是平板。小于6英寸的都是手机 平板尺寸&#xff1a; 6英寸、7英寸、10英寸、14英寸… Android系统支持多配置资源文件&#xff0c;我们可以追加新的资源目录到你的Android项目中。命名规范&#xff1a; 资源名字-限制符 l…

谈谈springboot的工厂模式

Spring Boot中的工厂模式是一种用于解耦组件创建过程的设计模式&#xff0c;它允许系统在运行时根据需要动态地创建不同类型的对象。这种模式在Spring框架中得到了广泛的应用&#xff0c;特别是在依赖注入&#xff08;DI&#xff09;和控制反转&#xff08;IoC&#xff09;的上…

CSS设置元素的宽高比

aspect-ratio 是一个CSS属性&#xff0c;它允许你指定一个元素的期望宽高比。当元素的宽度变化时&#xff0c;其高度会自动调整以保持指定的宽高比。这个属性非常有用&#xff0c;特别是当你想要确保某个元素&#xff08;如视频或图像容器&#xff09;始终保持特定的宽高比时。…

C++进阶03 模板与群体数据

听课笔记简单整理&#xff0c;供小伙伴们参考~&#x1f95d;&#x1f95d; 第1版&#xff1a;听课的记录代码~&#x1f9e9;&#x1f9e9; 编辑&#xff1a;梅头脑&#x1f338; 审核&#xff1a;文心一言 目录 &#x1f433;课程来源 &#x1f40b;模板 &#x1f40b;8.…

Vue2 —— 学习(六)

一、Vue 脚手架 &#xff08;一&#xff09;介绍 Vue 脚手架是 Vue 官方提供的标准化开发工具 &#xff08;开发平台&#xff09; 脚手架版本最新版本 是 4.x 文档可以查看 http://cli.vuejs.org/zh/ 就是vue 官网文档中 的 vue.cli command line interface &#xff08;…

基于docker-compose做版本升级

#离线做mysql升级 #去可有网络的docker docker pull mysql:latest#将mysql的镜像导出成tar文件到当前文件夹 docker save mysql:latest -o mysql.tar #新无网络机器导入 docker load -i mysql.tar #查看 #进入docker docker exec -it 0e86322c372a /bin/bash docker…

Python 爬虫基础——http请求和http响应

写本篇文章&#xff0c;我认为是能把自己所理解的内容分享出来&#xff0c;说不定就有和我一样有这样思维的共同者&#xff0c;希望本篇文章能帮助大家&#xff01;✨✨ 文章目录 一、 &#x1f308;python介绍和分析二、 &#x1f308;http请求三、 &#x1f308;http响应四、…

第8周 Python面向对象编程刷题

单击题目&#xff0c;直接跳转到页面刷题&#xff0c;一周后公布答案。加入QQ群701657573&#xff0c;随时答疑交流。 218&#xff1a;类对象属性219&#xff1a;坐标对象相加220&#xff1a;计算周长221&#xff1a;学生分数总和222&#xff1a;车辆类中创建引擎类对象223&am…

Python项目2 数据可视化

生成数据 数据可视化 指的是通过可视化表示来探索数据&#xff0c;它与数据挖掘 数据挖掘 紧密相关&#xff0c;而数据挖掘指的是使用代码来探索数据集的规律和关联。数据集可以是用一行代码就能表 示的小型数字列表&#xff0c;也可以是数以吉字节的数据。 漂亮地呈现数据关…

【论文笔记】Planning-oriented Autonomous Driving

原文链接&#xff1a;https://arxiv.org/abs/2212.10156 1. 引言 目前的自动驾驶工业界通常为不同任务部署不同的模型&#xff0c;但优化的孤立性会导致模块之间的信息损失、误差积累和特征不对齐。 一种更好的设计是将各种任务整合为多任务学习&#xff0c;即为共享的特征提…

设计模式之责任链模式讲解

概念&#xff1a;使多个对象都有机会处理请求&#xff0c;从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有对象处理它为止。最匹配的场景应该就是逐层审批的模式。 责任链模式只有两个角色&#xff…

C++——基础复习——会议室预约系统

一、简介 看了两个不同的C培训课程&#xff0c;最后的实习程序都是这个项目。不看老师的讲解视频&#xff0c;自己试着写了一下&#xff0c;在写的过程中发现当项目需求不固定时&#xff0c;会越写越乱&#xff0c;总是想要添加更高的需求&#xff0c;导致写了删&#xff0c;删…

wife_wife-攻防世界

题目 注册发现可以注册管理员,但是好像有条件 抓包试试 没思路了 看看其他师傅的wp&#xff0c;用到 js 原型链污染攻击 Nodejs原型链污染攻击基础知识 | Savants Blog (lxscloud.top) 网站后端是Node.js搭建的 原型链污染 简单来讲&#xff0c;通过 newUser.__proto__ …