蓝桥杯 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;
}
但是显然这样是不能得满分的,那么我们就要优化一下思路。
思路分析:
- 定义数组
a存储n个整数。 - 定义一个
map<int, int>,用于记录数组元素和它们的位置信息。(注意:map当某个键不存在时,其值会被初始为0) - 从标准输入流中读取
n个整数到数组a中。 - 定义动态规划数组
dp,初始化为 0,用于记录满足条件的[1,i]最远位置。 - 遍历数组
a,更新动态规划数组dp和map。 - 查询部分:从标准输入流中读取左右边界
l和r,判断是否存在满足条件的位置对,输出相应的结果。
#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),大大优化了。
相关文章:
蓝桥杯 2022 省A 选数异或
一种比较无脑暴力点的方法,时间复杂度是(nm)。 (注意的优先级比^高,记得加括号(a[i]^a[j])x) #include <iostream> #include <vector> #include <bits/stdc.h> // 包含一些 C 标准库中未包含的特定实现的函数的头文件 usi…...
计数器选型参数,结构原理,工艺与注意问题总结
🏡《总目录》 目录 1,概述2,工作原理2.1,触发器(Flip-Flop):2.2,计数器结构:2.3,计数操作:2.4,模式控制:2.5,扩展与级联:3,结构特点3.1,触发器3.2,加法器3.3,时钟控制电路...
Android 性能优化实例分享-内存优化 兼顾效率与性能
背景 项目上线一段时间后,回顾重要页面 保证更好用户体验及生产效率,做了内存优化和下载导出优化,具体效果如最后的一节的表格所示。 下面针对拍摄流程的两个页面 预览页 导出页优化实例进行介绍: 一.拍摄前预览页面优化 预览效果问题 存在…...
IT服务监督管理案例分析题
习题一 根据国家电网提出建设智能电网,信息化作为推进电力企业实现发展战略目标的和目标的核心保障体系,作用日益突出。这其中更需要进步推动信息运维综合监管系统的深化应用工作。 某软件股份有限公司是国内IT运维管理服务提供商,为多家电…...
【spring】AbstractApplicationContext 的refresh() 方法学习
上一篇我们一起学习了【spring】FileSystemXmlApplicationContext 类学习 AbstractApplicationContext 的refresh() 方法介绍 AbstractApplicationContext的refresh()方法仍然是整个Spring应用程序上下文初始化的核心流程入口。大体上的刷新生命周期依然保持一致。 refresh(…...
零基础10 天入门 Web3之第1天
10 天入门 Web3 Web3 是互联网的下一代,它将使人们拥有自己的数据并控制自己的在线体验。Web3 基于区块链技术,该技术为安全、透明和可信的交易提供支持。我准备做一个 10 天的学习计划,可帮助大家入门 Web3: 想要一起探讨学习的…...
【1】网络协议基础概念
【1】网络协议基础知识 1、互联网2、为什么要学习网络协议3、学习中需要搭建的环境4、客户端-服务器5、Java 的跨平台原理6、C/C的跨平台原理7、一个简单的SpringBoot项目(1) pom.xml(2) application.yml(3) NetworkStudyApp.java(4) SwaggerConfig.java(5) HelloWorldControll…...
flutter 中 GetxController 和 GetxService 的区别和使用场景
区别: GetxController: GetxController 用于管理特定页面或 widget 的状态。每个页面或 widget 可以拥有一个或多个 GetxController,用于管理其自身的状态和逻辑。GetxController 是短暂存在的,通常与页面或 widget 的生命周期相关…...
Python+Django+Yolov5路面墙体桥梁裂缝特征检测识别html网页前后端
程序示例精选 PythonDjangoYolov5路面墙体桥梁裂缝特征检测识别html网页前后端 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《PythonDjangoYolov5路面墙体桥梁裂缝特征检测识别html网页前…...
uniApp使用XR-Frame创建3D场景(7)加入点击交互
上篇文章讲述了如何将XR-Frame作为子组件集成到uniApp中使用 这篇我们讲解如何与场景中的模型交互(点击识别) 先看源码 <xr-scene render-system"alpha:true" bind:ready"handleReady"><xr-node><xr-mesh id"…...
单元测试11213123231313131231231231
使用技术 junit Mockito s[romg 示例代码: SpringBootTest(classes启动类.class) public class AbstractTes{ MockBean protected A a; } AutoConfigureMockMvc(printOnlyOnFailure false) public abstract class AbstractWebTes extends AbstractTes imple…...
libVLC 捕获鼠标、键盘事件
在实现播放器的时候,我们需要捕获键盘、鼠标事件进行视频快进、快退,或者双击全屏/退出全屏窗口、鼠标右键弹出菜单栏。默认情况下,在使用libVLC库的时候,我们无法捕获这些事件,因为我们将Qt的视频窗口传递给了libVLC。…...
京东云0基础搭建帕鲁服务器_4核16G和8核32G幻兽帕鲁专用服务器
使用京东云服务器搭建幻兽帕鲁Palworld游戏联机服务器教程,非常简单,京东云推出幻兽帕鲁镜像系统,镜像直接选择幻兽帕鲁镜像即可一键自动部署,不需要手动操作,真正的新手0基础部署幻兽帕鲁,阿腾云atengyun.…...
OpenCV 如何使用 XML 和 YAML 文件的文件输入和输出
返回:OpenCV系列文章目录(持续更新中......) 上一篇:如何利用OpenCV4.9离散傅里叶变换 下一篇: 目标 本文内容主要介绍: 如何使用 YAML 或 XML 文件打印和读取文件和 OpenCV 的文本条目?如何对 OpenCV …...
playbook的介绍、应用与实施
playbook的介绍、应用与实施 文章目录 playbook的介绍、应用与实施1. 实施playbook1.1 Ansible Playbook与临时命令1.2 格式化Ansible Playbook1.3 运行playbook1.4 提高输出的详细程度1.5 语法验证1.6 执行空运行 2. 实施多个play2.1 缩写多个play2.2 play中的远程用户和特权升…...
uniApp使用XR-Frame创建3D场景(5)材质贴图的运用
上一篇讲解了如何在uniApp中创建xr-frame子组件并创建简单的3D场景。 这篇我们讲解在xr-frame中如何给几何体赋予贴图材质。 先看源码 <xr-scene render-system"alpha:true" bind:ready"handleReady"><xr-node><xr-assets><xr-asse…...
阿里云CentOS7安装Hadoop3伪分布式
ECS准备 开通阿里云ECS 略 控制台设置密码 连接ECS 远程连接工具连接阿里云ECS实例,这里远程连接工具使用xshell 根据提示接受密钥 根据提示写用户名和密码 用户名:root 密码:在控制台设置的密码 修改主机名 将主机名从localhost改为需要…...
78.子集90.子集2
78.子集 思路 又回到了组合的模板中来,这道题相比于前面的题省去了递归终止条件。大差不差。 代码 class Solution {List<List<Integer>> result new ArrayList<>();LinkedList<Integer> listnew LinkedList<>();public List<…...
基于Ubuntu的Linux系统安装jsoncpp开发包过程
执行以下命令: sudo apt update sudo apt install libjsoncpp-dev有可能出现的问题: 1.如果在执行sudo apt update时出现以下信息 Hit:1 http://mirrors.aliyun.com/ubuntu bionic InRelease Hit:2 http://mirrors.aliyun.com/ubuntu bionic-security…...
葵花卫星影像应用场景及数据获取
一、卫星参数 葵花卫星是由中国航天科技集团公司研制的一颗光学遥感卫星,代号CAS-03。该卫星于2016年11月9日成功发射,位于地球同步轨道,轨道高度约为35786公里,倾角为0。卫星设计寿命为5年,搭载了高分辨率光学相机和多…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
