蓝桥杯刷题-15-异或和之和-拆位+贡献法⭐⭐(⊙o⊙)

蓝桥杯2023年第十四届省赛真题-异或和之和

在这里插入图片描述
题目描述
给定一个数组 Ai,分别求其每个子段的异或和,并求出它们的和。或者说,对于每组满足 1 ≤ L ≤ R ≤ n 的 L, R ,求出数组中第 L 至第 R 个元素的异或和。然后输出每组 L, R 得到的结果加起来的值。

输入格式
输入的第一行包含一个整数 n 。
第二行包含 n 个整数 Ai ,相邻整数之间使用一个空格分隔。

在这里插入图片描述
在这里插入图片描述
⭐⭐
处理位运算的常用方法:拆位法
常用的思想:贡献法思想

010101100101
011010101010
101010101101
110101010101
110010101011
对于二进制位中的第i位:
如果这一位中1的个数是奇数,那么最后的结果中, 这一位就是1.如果是偶数,在结果中,这一位就是0.
在这里插入图片描述
在这里插入图片描述

bit=(a[j]>>i)&1
//这段代码是在C语言中常见的位操作语句,它主要用于提取一个整数数组a中第j个元素的第i位的值
a[j]: 这是数组a中的第j个元素。在这里,a是一个整数数组,j是数组的索引。a[j] >> i: 这是将数组元素a[j]右移i位。这里的>>是右移位操作符,它将a[j]的二进制表示向右移动i位。例如,如果a[j]1101,而i是2,那么结果将是0011(a[j] >> i) & 1: 这一步是将右移后的结果与1进行按位与操作。这里的&是按位与操作符,它将两个数的对应位进行与操作。因为1在二进制中是0001,所以此操作会保留右移后结果的最低位。这样就可以提取出a[j]右移i位后的最低位,即第i位的值。bit: 这是一个变量,用于存储提取出的第i位的值。如果该位为1,则bit为1;如果该位为0,则bit为0。因此,整个表达式(a[j]>>i)&1的目的是提取出数组a中第j个元素的第i位的值,并将其存储在变量bit中。
ans+=(1<<i)*n0;
//这段代码是在C语言中常见的位操作语句,它执行的是一个位运算操作
1 << i: 这是将数字1左移i位的操作。这里的<<是左移位操作符,它将1的二进制表示向左移动i位。例如,如果i是2,那么结果将是100(1 << i) * n0: 这是将左移后的结果乘以变量n0的值。这里的*是乘法操作符。因为左移后的结果实际上是2的i次幂,所以这一步相当于将2的i次幂乘以n0。ans += (1 << i) * n0: 这是将上一步得到的结果加到变量ans上。这里的+=是加法赋值操作符,它将右侧表达式的结果加到左侧的变量上。因此,整个表达式ans += (1 << i) * n0的目的是将2的i次幂(即1左移i位)乘以n0的值,并将结果加到变量ans上。

代码:

#include <iostream>
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10;
int a[N];void solve()
{int n;cin>>n;for(int i=0;i<n;i++){cin>>a[i];}int ans=0;for(int i=20;i>=0;i--){int s=0;//前缀和int n0=1,n1=0;//偶数个数和奇数个数for(int j=0;j<n;j++){int bit=(a[j]>>i)&1;//从高到底取s+=bit;//前缀和是奇数,合法区间个数=1+前面偶数的个数if(s%2){ans+=(1<<i)*n0;n1++;}else{ans+=(1<<i)*n1;n0++;}}}cout<<ans<<endl;
}
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;t=1;//cin>>t;while(t--)solve();
}

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

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

相关文章

MySQL5.7导入MySQL8.0以上版本的几种错误

【错误原因1】/!40000 DROP DATABASE IF EXISTS springbootra863/; 【解决办法】给这一行删了

阿里通义千问开源 320 亿参数模型;文字和音频自动翻译成手语Hand Talk拉近人与人的距离

✨ 1: Qwen1.5-32B Qwen1.5-32B是Qwen1.5系列中性能与效率兼顾的最新语言模型&#xff0c;内存占用低&#xff0c;运行速度快。 Qwen1.5-32B是Qwen1.5语言模型系列的最新成员&#xff0c;这个模型是基于先进的技术研发的&#xff0c;旨在提供一种既高效又经济的AI语言理解和生…

CAXA实体设计教程 网盘下载

CAXA实体设计教程 网盘下载 https://pan.baidu.com/s/1tOIoWmAwl8Wepu7iFsKB_A?pwd2024 章节&#xff1a; 第一章 CAXA3D实体设计入门基础概述 &#xff08;150分钟&#xff09; 第二章 CAXA3D实体设计二维草图 &#xff08;230分钟&#xff09; 第三章 CAXA实体设计 特征生成…

OpenHarmony实战:瑞芯微RK3568移植案例

本文章是基于瑞芯微RK3568芯片的DAYU200开发板&#xff0c;进行标准系统相关功能的移植&#xff0c;主要包括产品配置添加&#xff0c;内核启动、升级&#xff0c;音频ADM化&#xff0c;Camera&#xff0c;TP&#xff0c;LCD&#xff0c;WIFI&#xff0c;BT&#xff0c;vibrato…

基于springboot实现在线教育平台系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现在线教育平台系统演示 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了微服务在线教育系统的开发全过程。通过分析微服务在线教育系统管理的不足&#xff0c;创建了一个计算机管理微服务在线…

CASA模型教程

原文链接&#xff1a;CASA&#xff08;Carnegie-Ames-Stanford Approach&#xff09;模型教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247600635&idx6&sna655a8de570edcaa435d6e917b66d9b3&chksmfa82081ccdf5810a33a778e8771bb116bde9e5a1f795da…

IRIS / Chronicles 数据结构备忘录

数据结构的内容主要涉及到索引和全局变量。 这部分的内容的问题在于概念多&#xff0c;和普通的数据库对应的内容也不太一样&#xff0c;需要花点时间了解。 networked items 有关英文的解释是&#xff1a; Networked items that point to databases that use padded-string…

Map接口及其实现类及常用方法

1.Map接口及其实现类 java.util.Map : 存储一对一对的数据(key-value键值对)|----->HashMap : 主要实现类,线程不安全,效率高,可以添加null的键值对;底层使用数组单向链表红黑树。|------->LinkedHashMap : 是HashMap的子类,在HashMap的数据结构的基础上,添加了一对双向…

读博做FPGA上的AI加速能不能搞啊?

从企业的角度来看&#xff0c;选择在FPGA上进行AI加速仍然有其一定的优势和适用场景&#xff0c;但也有一些挑战需要考虑。我这里有一套嵌入式入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习嵌入式&#xff0c;不妨点个关注&#xff0c;给…

【经典算法】LCR187:破冰游戏(约瑟夫问题,Java/C/Python3/JavaScript实现含注释说明,Easy)

目录 题目思路及实现方式一&#xff1a;迭代模拟&#xff08;用链表模拟这个游戏&#xff09;思路代码实现Java版本C语言版本Python3版本 复杂度分析 方式二&#xff1a;数学迭代思路代码实现Java版本C语言版本Python3版本 复杂度分析 方式三&#xff1a;递归思路代码实现Java版…

【CSS疑难点汇总】1.bor-box失效情况总结以及高宽设置为auto的情况

1. box-sizing box-sizing是改变盒子宽高的计算方式&#xff0c;一般使用bor-box&#xff0c;消除padding和border对整个盒子的影响&#xff0c;但在没有明确给出宽高的情况下&#xff0c;box-sizing是没有效果的 1.1 box-sizing不生效的情况 1.1.1块级盒子嵌套 ​ 宽度继承…

(一)基于IDEA的JAVA基础12

一维数组 为什么使用数组: 当我们需要存储一系列数据的时候&#xff0c;就需要用到数组&#xff0c;如果不使用数组&#xff0c;我们就要需要一个一个的去声明变量&#xff0c;这样浪费内存空间&#xff0c;同时效率低下。 什么是数组: 数组本身就是一个变量&#xff0c;只…

(3)(3.1) 英特尔Realsense深度摄像头(二)

文章目录 前言 5 配置ArduPilot 6 地面测试&#xff1a;飞行前验证 7 飞行测试 8 实验 9 数据闪存记录 前言 本文介绍如何将英特尔 Realsense 深度摄像头(Intel Realsense Depth Camera)与 ArduPilot 配合使用&#xff0c;以实现避障(obstacle avoidance)。该方法使用在…

javaScript手写专题——实现instanceof/call/apply/bind/new的过程/继承方式

目录 原型链相关 手写instanceof 实现一个_instance方法&#xff0c;判断对象obj是否是target的实例 测试 手写new的过程 实现一个myNew方法&#xff0c;接收一个构造函数以及构造函数的参数&#xff0c;返回构造函数创建的实例对象 测试myNew方法 手写类的继承 ES6&…

照顾宝贝的双眼:新生儿大小眼关爱手册

引言&#xff1a; 宝宝的眼睛是他们认知世界的窗户&#xff0c;眼睛的健康至关重要。大小眼&#xff0c;即一只眼睛比另一只眼睛大或小&#xff0c;是新生儿时期可能出现的一种眼部异常。尽管在新生儿中相对较少见&#xff0c;但家长们仍然需要了解如何正确照顾宝宝的大小眼&am…

计算机视觉之三维重建(7)---多视图几何(下)

文章目录 一、透视结构恢复问题1.1 概述1.2 透视结构恢复歧义1.3 代数方法1.4 捆绑调整 二、P3P问题三、随机采样一致性 一、透视结构恢复问题 1.1 概述 1. 透视结构恢复问题&#xff1a;摄像机为透视相机&#xff0c;内外参数均未知。 2. 问题&#xff1a;已知 n n n 个三维…

蓝桥杯每日一题:n-皇后问题(回溯)

n−皇后问题是指将 n 个皇后放在 nn 的国际象棋棋盘上&#xff0c;使得皇后不能相互攻击到&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n&#xff0c;请你输出所有的满足条件的棋子摆法。 输入格式 共一行&#xff0c;包含整数 n。 输出…

主流电商平台开放接口:电商数据采集API获取淘宝商品详情描述主图SKU价格订单物流

API接口 返回值说明 item_get-获得淘宝商品详情 API 注册开通 taobao.item_get 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09…

矩阵链乘法问题

描述 输入 输入共n1行 第一行输入矩阵的总个数n[2,1000] 后n行分别输入矩阵的维数[1,100] 输出 最后一行输出少乘法次数 输入样例 1 6 30 35 35 15 15 5 5 10 10 20 20 25 输出样例1 15125 代码实现 #include<iostream> #include<vector> #include<…

基于ssm的星空游戏购买下载平台的设计与实现论文

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff0c;商品交易当然也不能排除在外&#xff0c;随着商品交易管理的不断成熟&#xff0c;它彻底改变了过去传统的经营管理方式&#xff0c;不仅使商品…