蓝桥杯 2022 省A 选数异或

一种比较无脑暴力点的方法,时间复杂度是(n²+m)。
(注意==的优先级比^高,记得加括号(a[i]^a[j])==x)

#include <iostream>
#include <vector>
#include <bits/stdc++.h> // 包含一些 C++ 标准库中未包含的特定实现的函数的头文件
using namespace std;int main() {int n, m, x;// 输入 n(数组长度)、m(查询次数)、x(给定的异或值)cin >> n >> m >> x;// 定义数组 a 存储 n 个整数int a[n + 1];// 输入 n 个整数到数组 a 中for (int i = 1; i <= n; i++) {cin >> a[i];}// 定义动态规划数组 dp,初始化为 INT_MAX,记录a[i]第一次能异或为x的位置j。vector<int> dp(n + 1, INT_MAX);// 对于每对 i、j,判断 a[i] 和 a[j] 是否异或等于给定的 x// 如果等于,则更新 dp[i] 为 j,表示 a[i] 和 a[j] 可以异或得到 xfor (int i = 1; i < n; i++) {for (int j = i + 1; j <= n; j++) {if ((a[i] ^ a[j]) == x) {dp[i] = j;break; // 找到第一个符合条件的 j 即可跳出内层循环}}}// 对于每次查询,输入左右边界 l、r// 如果 l 不等于 r 并且 dp[l] 小于等于 r,则输出 "yes",否则输出 "no"for (int i = 0; i < m; i++) {int l, r;cin >> l >> r;if (l != r && dp[l] <= r)cout << "yes" << endl;elsecout << "no" << endl;}return 0;
}

但是显然这样是不能得满分的,那么我们就要优化一下思路。

思路分析:

  1. 定义数组 a 存储 n 个整数。
  2. 定义一个 map<int, int>,用于记录数组元素和它们的位置信息。(注意:map当某个键不存在时,其值会被初始为0)
  3. 从标准输入流中读取 n 个整数到数组 a 中。
  4. 定义动态规划数组 dp,初始化为 0,用于记录满足条件的[1,i]最远位置。
  5. 遍历数组 a,更新动态规划数组 dpmap
  6. 查询部分:从标准输入流中读取左右边界 lr,判断是否存在满足条件的位置对,输出相应的结果。
#include<iostream>
#include<bits/stdc++.h>
using namespace std;int main() {int n, m, x;// 输入数组长度 n、查询次数 m 和给定的异或值 xcin >> n >> m >> x;// 定义数组 a 存储 n 个整数int a[n + 1];// 定义 map,用于记录数组元素和它们的位置信息map<int, int> map;// 输入 n 个整数到数组 a 中for(int i = 1; i <= n; i++) {cin >> a[i];}// 定义动态规划数组 dp,初始化为 0,用于记录满足条件的最远位置vector<int> dp(n + 1, 0);// 对数组 a 进行遍历for(int i = 1; i <= n; i++) {// 更新动态规划数组 dp// dp[i] 表示在位置 i 时,可以得到的满足条件的最远位置// 比较当前位置和之前出现的值对应位置的较大值,更新 dp[i]dp[i] = max(dp[i - 1], map[a[i] ^ x]);// 更新 map,记录当前元素的位置信息map[a[i]] = i;}// 查询部分for(int i = 0; i < m; i++) {int l, r;cin >> l >> r;// 如果左右边界不相等,并且 dp[r] 大于等于左边界 l,则输出 "yes",否则输出 "no"if(l != r && dp[r] >= l)cout << "yes" << endl;elsecout << "no" << endl;}return 0;
}

时间复杂度是O(n+m),大大优化了。

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

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

相关文章

成都市酷客焕学新媒体科技有限公司:实现品牌的更大价值!

成都市酷客焕学新媒体科技有限公司专注于短视频营销&#xff0c;深知短视频在社交媒体中的巨大影响力。该公司巧妙地将品牌信息融入富有创意和趣味性的内容中&#xff0c;使观众在轻松愉悦的氛围中接受并传播这些信息。凭借独特的创意和精准的营销策略&#xff0c;成都市酷客焕…

第二证券|打新股有风险吗?

打新股有危险&#xff0c;其主要危险是破发&#xff0c;其间呈现以下状况&#xff0c;新股可能会破发&#xff1a; 1、估值过高 新股的估值过高&#xff0c;与其价值不相契合&#xff0c;其泡沫性较大&#xff0c;然后导致个股在上市之后&#xff0c;稳健投资者以及主力大量地…

10个替代Sketch的软件大盘点!第一款震撼来袭!

Sketch是Mac平台上专门为用户界面设计的矢量图形绘制工具。Sketch简单的界面背后有优秀的矢量绘制能力和丰富的插件库。但遗憾的是&#xff0c;Sketch只能在Mac平台上使用和浏览&#xff0c;而且是本地化的工具&#xff0c;云共享功能并不完善。在本文中&#xff0c;我们评估了…

金三银四面试题(一):JVM类加载与垃圾回收

面试过程中最经典的一题&#xff1a; 请你讲讲在JVM中类的加载过程以及垃圾回收&#xff1f; 加载过程 当Java虚拟机&#xff08;JVM&#xff09;启动时&#xff0c;它会通过类加载器&#xff08;ClassLoader&#xff09;加载Java类到内存中。类加载是Java程序运行的重要组成…

python(一)网络爬取

在爬取网页信息时&#xff0c;需要注意网页爬虫规范文件robots.txt eg:csdn的爬虫规范文件 csdn.net/robots.txt User-agent: 下面的Disallow规则适用于所有爬虫&#xff08;即所有用户代理&#xff09;。星号*是一个通配符&#xff0c;表示“所有”。 Disallow&…

Scikit-Learn K近邻分类

Scikit-Learn K近邻分类 1、K近邻分类1.1、K近邻分类及原理1.2、超参数K1.3、K近邻分类的优缺点2、Scikit-Learn K近邻分类2.1、Scikit-Learn K近邻分类API2.2、K近邻分类实践(鸢尾花分类)2.3、交叉验证寻找最佳K2.4、K近邻分类与Pipeline1、K近邻分类 K近邻是一种常用的分类…

JSP基础

一、JSP JSP&#xff08;全称&#xff1a;Java Server Pages&#xff09;&#xff1a;Java 服务端页面。是一种动态的网页技术&#xff0c;其中既可以定义 HTML、JS、CSS等静态内容&#xff0c;还可以定义 Java代码的动态内容&#xff0c;也就是 JSP HTML Java 。如下就是js…

【NOI】树的初步认识

文章目录 前言一、树1.什么是树&#xff1f;2.树的基本概念3.树的基本术语3.1 节点3.1.1 根节点3.1.2 父节点、子节点3.1.3 兄弟节点、堂兄弟节点3.1.4 祖先节点、子孙节点3.1.5 叶子节点/终端节点3.1.6 分支节点/非终端节点 3.2 边3.3 度3.3.1 树的度 3.4 层次3.4.1 树的深度3…

ERROR: No matching distribution found for tb-nightly

问题描述 安装tb-lightly失败&#xff1a;ERROR: No matching distribution found for tb-nightly 解决方案 因为我的镜像源默认是清华的&#xff0c;但是pip源中没有对应的“tb-nightly”依赖包。 如果不知道的&#xff0c;也可以查看一下pip的配置&#xff1a; python -m …

【Go】结构体中Tag标识

https://blog.csdn.net/weixin_45193103/article/details/123876319 https://blog.csdn.net/qq_49723651/article/details/122005291 https://juejin.cn/post/7005465902804123679 学一点&#xff0c;整一点&#xff0c;基本都是综合别人的&#xff0c;弄成我能理解的内容 Tag定…

GeoTrust SSL证书有什么优势?

GeoTrust SSL证书具备以下显著优势&#xff1a; 1. 市场占有率比较高&#xff1a;GeoTrust作为知名的SSL证书供应商&#xff0c;拥有广泛的市场接受度和高占有率&#xff0c;表明其产品受到众多企业和网站的信任和采用。 2. 品牌信誉与信任标识&#xff1a;在高安全性浏览器中&…

Unity3d使用Jenkins自动化打包(Windows)(一)

文章目录 前言一、安装JDK二、安装Jenkins三、Jenkins插件安装和使用基础操作 实战一基础操作 实战二 四、离线安装总结 前言 本篇旨在介绍基础的安装和操作流程&#xff0c;只需完成一次即可。后面的篇章将深入探讨如何利用Jenkins为Unity项目进行打包。 一、安装JDK 1、进入…

在word中显示Euclid Math One公式的问题及解决(latex公式,无需插件)

问题&#xff1a;想要在word中显示形如latex中的花体字母 网上大多解决办法是安装Euclid Math One。安装后发现单独的符号插入可行&#xff0c;但是公式中选择该字体时依然显示默认字体。 解决办法&#xff1a;插入公式后&#xff0c;勾选左上角的latex 在公式块中键入latex代码…

Go语言爬虫实战(线程池)

Go语言爬虫实战 目标 利用go语言爬取指定网站的图片。实现爬取网站任意页面所有所需的图片。实现使用go语言线程池开启多个线程爬取图片内容。最后实现创建多个文件夹存储图片。 爬取网站图片 步骤 对指定URL发去GET请求&#xff0c;获取对应的响应。 resp, err : http.Get(…

【JavaWeb】Day24.Web入门——HTTP协议(一)

HTTP协议——概述 1.介绍 HTTP&#xff1a;Hyper Text Transfer Protocol(超文本传输协议)&#xff0c;规定了浏览器与服务器之间数据传输的规则。 http是互联网上应用最为广泛的一种网络协议http协议要求&#xff1a;浏览器在向服务器发送请求数据时&#xff0c;或是服务器在…

AI写作的力量:让你的文章焕发生机

在当今数字化时代&#xff0c;内容创作变得越来越重要。无论是博客文章、广告文案还是社交媒体更新&#xff0c;优质的文本都能吸引读者的注意力并传达信息。然而&#xff0c;创作过程并不总是轻松的&#xff0c;尤其是当我们面临灵感枯竭或时间紧迫的挑战时。这就是AI写作的力…

网站为什么要选择使用安全加速SCDN?

安全加速SCDN&#xff08;安全内容交付网络&#xff09;是一种网络加速服务&#xff0c;旨在提高网站和应用程序的性能和安全性。它使用专门的技术和基础设施来加速内容传输并保护网站免受网络攻击。 安全加速SCDN可以通过内容缓存、快速传输和动态路由技术来加速网站和应用程…

安卓调试桥ADB

Logcat 命令行工具 | Android Studio | Android Developers 什么是ADB ADB 全称为 Android Debug Bridge &#xff0c;是 Android SDK &#xff08;安卓的开发工具&#xff09;中的一个工具&#xff0c;起到调试桥的作用&#xff0c;是一个 客户端 - 服务器端程序 。其中 …

【Linux】开始掌握进程控制吧

送给大家一句话&#xff1a; 我并不期待人生可以一直过得很顺利&#xff0c;但我希望碰到人生难关的时候&#xff0c;自己可以是它的对手。—— 加缪 开始学习进程控制 1 前言2 进程创建2.1 fork函数初识2.2 fork函数返回值2.3 写时拷贝2.4 fork常规用法2.5 fork调用失败的原因…

3月23日笔记

广播域与泛洪范围是相同的 广播&#xff1a;在同一个泛洪范围内&#xff0c;强迫交换机泛洪&#xff08;主动&#xff09; 泛洪&#xff08;被动&#xff09; ARP的工作原理&#xff1a;ARP先通过广播发送请求包&#xff0c;所有收到该广播包的设备都会将其中的源IP和源MAC相…