每日一题~ abc 365 E 异或运算(拆位+贡献)
处理位运算常用的方法:
拆位法(一位一位的处理,通常题目中会给出元素的最大是2的的多少次幂,当然也有给10的次幂的,自己注意一下就可以了)
常用的思想 :
算贡献。
异或的性质:
A^A=0
A^0=A
异或 具有类似前缀和的性质。可以通过前缀异或 求区间的异或值
洛谷lqb
题意:对于一组数,求所有子串的异或和 之后求和
因为 异或的前缀和的性质。所以区间的异或值,可以表示为前缀的异或

通过转化,其实就是求,异或前缀数组,两两异或的 和。
我们 一位一位的考虑。
对于某一位来说 ,
假设前缀数组中的元素 这一位上的数字是:
0 0 1 0 1,考虑两两异或,只有 1 和 0 能产生一个1.
那么 这一位对答案的贡献是 0的个数*1的个数 *这一位的权重。
将每一位的贡献加起来。
最后不要忘记每一个B元素都要和0异或一下。这个从上面的数学公式中,可以看出来。这个对应的就是 一个前缀区间的异或值。体现在代码中,就是cnt0=1
#include <bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{int n;cin>>n;vector<int>a(n+1);for (int i=1;i<=n;i++)cin>>a[i],a[i]^=a[i-1];int ans=0;for(int i=0;i<=20;i++){int cnt1=0,cnt0=1;for (int j=1;j<=n;j++){if ((a[j]>>i )&1)cnt1++;else cnt0++;}ans+=cnt0*cnt1*(1<<i);}cout<<ans<<'\n';
}
abc 365 E
题意:根据 异或前缀的性质,可以转换一下。

乍一看,这个很像 B数组两两异或的和。但是我们可以注意到 并没有相邻两项的异或。两两异或的结果很好求。
我们只需要,对答案减去B相邻两项的异或。就可以了。
有一个的小细节:
B数组的最初的元素是B0,所以数组开到了n+1。用数学公式表示很清楚~~
#include <bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{int n;cin>>n;vector<int>a(n+1);for (int i=1;i<=n;i++)cin>>a[i],a[i]^=a[i-1]; int ans=0;for (int i=1;i<=n;i++)ans-=(a[i]^a[i-1]);for (int i=0;i<=30;i++){int cnt[2]{};for (int j=0;j<=n;j++){int x=(a[j]>>i) &1;cnt[x]++;}ans+=cnt[0]*cnt[1]*(1ll<<i);}cout<<ans<<"\n";}
添加链接描述
意外发现了,洛谷上的这个异或的题单。脑筋急转弯一下。
1,所有 子数组的元素和 的和。考虑每个元素的贡献,是包含这个元素的子数组的个数,
对于下标从1开始的情况,**包含这个元素的子数组的个数是(i)*(n-i+1).**累加起来就可以了。
2,求所有子数组的异或和 的异或和。因为X^X=0,所以只有子数组中出现奇数次的数字才会产生贡献。利用map来存储。
void solve()
{int n;cin>>n;map<int,int>mp;int t,tt;for (int i=0;i<n;i++){cin>>t;tt=(i+1)*(n-i);mp[t]+=tt;}int ans=0;for (auto [x,y]:mp){if (y&1){ans^=x;}}cout<<ans<<"\n";
}
3.所有子数组的异或和 的和。这道和上文第一题一样。
4.不会,先略过去
下面的题都是子序列
5.和1的子数组不同,这次是所有非空子序列的元素和 的元素和。
对于第i 个元素,包含这个元素的子序列有 2^(n-1),相当于剩下的元素都有选和不选两种选择。
所以将每个元素的贡献加起来就可以了
6.所有非空子序列的 异或和 的异或和。只有贡献奇数次的数值才会产生贡献。
每个数贡献的是 2^(n-1) 次,只有n=1的时候,是奇数。输出这个数值,就可以了。其他时候都是零。
7.计算非空子序列的 异或和 的和 。也是拆位思考。如果这一位没有1,那么贡献是0.如果有1那么贡献是2^(n-1) 再乘上权重。(不是很明白,怎么算的贡献)先贴上灵神的题解,日后再来想想。

8.计算 非空子序列 和的异或和。
考虑枚举累加每个子序列和的可能值的贡献
对当前序列数和sum,得到该和的方案数为奇数时贡献为sum,否则为0
考虑使用01背包推导序列数和的方案数的奇偶性
dp[j]表示装满j 的方案数。
#include <bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
#define int long long void solve()
{int n;cin>>n;vector<int>a(n);int sum=0;for (int i=0;i<n;i++){cin>>a[i];sum+=a[i];}vector<int>dp(sum+1);//装满容量为j的背包,有多少种方法dp[0]=1;for (int i=0;i<n;i++)for (int j=sum;j>=a[i];j--){dp[j]+=dp[j-a[i]];}int ans=0;for (int i=1;i<=sum;i++){if (dp[i]&1)ans^=i;}cout<<ans<<"\n";}相关文章:
每日一题~ abc 365 E 异或运算(拆位+贡献)
处理位运算常用的方法: 拆位法(一位一位的处理,通常题目中会给出元素的最大是2的的多少次幂,当然也有给10的次幂的,自己注意一下就可以了) 常用的思想 : 算贡献。 异或的性质: A^A0 …...
前端八股文笔记【三】
JavaScript 基础题型 1.JS的基本数据类型有哪些 基本数据类型:String,Number,Boolean,Nndefined,NULL,Symbol,Bigint 引用数据类型:object NaN是一个数值类型,但不是…...
AI学习记录 - transformer的Embedding层
创作不易,免费的赞 前面有介绍了GPT2如何进行token化的过程,现在讲下transformer的Embedding层 Embedding层就是一个巨大的矩阵,边长分别是词汇表长度和词向量维度,矩阵里面的每一个数字都是一个随机初始化的,或者是…...
23-PCB封装名称的统一添加与管理
1.进入封装管理器 2. 选择对象,点击右侧添加按钮 3. 搜索所需要的封装 4.接受创建变更 5.执行变更 6.关闭...
【Python从入门到进阶】62、Pandas中DataFrame对象案例实践
接上篇《61、Pandas中DataFrame对象的操作(二)》 上一篇我们讲解DataFrame对象的统计分析、可视化以及数据导出与保存相关内容。本篇我们延续之前学习的DataFrame对象的知识,结合一个数据案例进行实践操作。 一、案例说明 我们将通过一个股…...
使用Python实现深度学习模型:智能环境监测与预警
介绍 智能环境监测与预警是保护生态环境和人类健康的重要手段。通过深度学习技术,我们可以实时获取环境数据,分析环境变化趋势,及时发出预警。本文将介绍如何使用Python和深度学习库TensorFlow与Keras来构建一个简单的环境监测与预警模型。 环境准备 首先,我们需要安装必…...
ThreadLocal的使用场景是什么
ThreadLocal 是 Java 中用于实现线程局部变量的工具,它提供了每个线程独立的变量副本,使得不同线程对该变量的操作不会相互干扰。以下是 ThreadLocal 的常见使用场景: 线程安全的对象共享: ThreadLocal 可以用来避免线程间共享状…...
【网络爬虫篇】逆向实战—某东:滑块验证码(逆向登录)2024.8.7最新发布,包干货,包详细
【网络爬虫篇】更多优秀文章借鉴: 1. 使用Selenium实现黑马头条滑块自动登录 2. 使用多线程采集爬取豆瓣top250电影榜 3. 使用Scrapy爬取去哪儿网游记数据 4. 数据采集技术综合项目实战1:国家水稻网数据采集与分析 5. 数据采集技术综合项目实战2&#x…...
为什么优质的酱香白酒都会带点苦味?
大家好,我是酱酒亮哥,不知大家有没有发现,在制作一杯美味的咖啡或是烘焙一块香脆的面包时,制作过程中都会有一些独特的味道和香气产生,对吧?同样地,酱香白酒的酿造过程也是一个复杂而精细的化学…...
软件测试常见面试题
软件测试阶段分为单元测试,集成测试,系统测试,验收测试。单元测试策略为对代码中的函数方法进行测试,目的是发现代码的问题。集成测试策略是模块中组合起来进行测试,要求发现与接口有关的问题。系统测试策略是子系统的…...
面试经典算法150题系列-接雨水
接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,…...
【C++】 类型转换深度探索:揭开类型转换的奥秘
🌈 个人主页:Zfox_ 🔥 系列专栏:C从入门到精通 目录 一: 🚀 C语言中的类型转换 二: 🔥 为什么C需要四种类型转换 三: 🔥 C强制类型转换 🥝 3.1 st…...
深入探索Webkit的Web Authentication API:安全与便捷的融合
Web Authentication API,通常被称为WebAuthn,是一个新兴的Web标准,旨在通过提供更安全、更便捷的认证方式来改善用户的在线体验。随着Webkit对WebAuthn的支持日益增强,本文将深入探讨这一API的功能、实现方式以及如何在Webkit浏览…...
Vue - 关于v-wave 波浪动画组件
Vue - 关于v-wave 波浪动画组件 这个动画库可以在标签中添加新的v-wave属性,来让点击标签元素后添加漂亮的波纹效果,并且可以根据父元素自动形成波纹的颜色,也可以自定义波纹颜色,持续时间,透明度,触发的对…...
计算机网络408考研 2019
计算机网络408考研2019年真题解析_哔哩哔哩_bilibili 2019 1 1 1 1...
实时捕捉与追溯:得物基于 eBPF 打造云上网络连接异常摄像头
近期我们容器 SRE 团队基于 eBPF 技术建设网络连接异常感知能力,灰度上线过程中发现了生产环境 10 以上的应用配置错误、程序 Bug 等问题。在和应用负责同学同步风险过程中,大家都挺好奇我们如何实现在对应用无侵入的情况下发现服务连接异常的。本篇文档…...
ubuntu14.04图形界面配置
Ubuntu系统启动,输入用户密码后,屏幕显示彩色背景,但是始终不能进入图形界面。 如果你也遇到过这种情况,可以参照以下方法解决(在 ubuntu14.04 验证)。 同时按下 alt ctrl F1,屏幕出现 tty1&a…...
51单片机-第八节-蜂鸣器
一、什么是蜂鸣器? 蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号。 蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器: 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可…...
Windows命令查看WiFi密码
查看所有已保存的WiFi网络 (以管理员身份)输入以下命令 netsh wlan show profiles查看某个WiFi网络的密码 netsh wlan show profile name"你的网络名" keyclear在输出中,在关键内容(Key Content)字段下找…...
不同环境下RabbitMQ的安装-2 ARM架构、X86架构、Window系统环境下安装RabbitMQ
ARM架构、X86架构、Window系统环境下RabbitMQ的安装 RabbitMQ安装1 Erlang语言介绍2 安装Erlang2.1 ARM架构的CentOS虚拟机中安装Erlang2.2 X86架构的CentOS虚拟机中安装Erlang2.3 Windows系统安装Erlang2.3.1 下载Erlang2.3.2 安装Erlang2.3.3 配置Erlang2.3.4 检测Erlang 3.安…...
Winhance中文版:3分钟让Windows系统重获新生的终极指南
Winhance中文版:3分钟让Windows系统重获新生的终极指南 【免费下载链接】Winhance-zh_CN A Chinese version of Winhance. C# application designed to optimize and customize your Windows experience. 项目地址: https://gitcode.com/gh_mirrors/wi/Winhance-z…...
NCM音频文件终极解密指南:3步解锁网易云音乐,实现跨设备自由播放
NCM音频文件终极解密指南:3步解锁网易云音乐,实现跨设备自由播放 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾为网易云音乐的NCM加密文件而烦恼?下载的音乐只能在特定设备播放…...
PHP网关偶发502/504?揭秘OpenResty+PHP-FPM在严苛工控环境下的8大超时耦合陷阱(附压测对比图表)
第一章:工业PHP网关的典型故障现象与诊断起点工业PHP网关作为边缘计算与传统OT系统间的关键协议转换节点,其运行稳定性直接影响产线数据采集的连续性。常见故障并非源于语法错误,而是由资源约束、时序敏感性及协议适配偏差引发的隐性异常。典…...
如何快速上手 Plus Jakarta Sans:面向新手的完整实践指南
如何快速上手 Plus Jakarta Sans:面向新手的完整实践指南 【免费下载链接】PlusJakartaSans Jakarta Sans is a open-source fonts. Designed for Jakarta "City of collaboration" program in 2020. 项目地址: https://gitcode.com/gh_mirrors/pl/Plus…...
OpenClaw简介|OpenClaw衍生产品|OpenClaw辅助工具
OpenClaw简介OpenClaw是一个开源的多功能机器人爪手设计项目,专注于提供低成本、模块化的机械爪解决方案,适用于科研、教育及工业自动化场景。其设计强调灵活性和可定制性,支持3D打印制造,便于用户根据需求调整结构和功能。核心特…...
Phi-4-mini-reasoning与SpringBoot微服务集成:构建智能业务逻辑层
Phi-4-mini-reasoning与SpringBoot微服务集成:构建智能业务逻辑层 1. 为什么要在微服务中集成AI推理能力 微服务架构已经成为现代企业应用开发的主流选择,而AI能力的引入正在改变传统业务逻辑的实现方式。将Phi-4-mini-reasoning这样的轻量级推理模型集…...
zookeeper 常用命令之zkCli
简介:介绍zkCli客户端非常常用的命令 zkCli.sh 不填后面的参数,默认连接的就是localhost:2181zk节点类似Linux的目录,比如/uar/local,-s表示持久的节点,-e是临时的节点。data是往这个节点里面放入哪些数据,…...
高效获取城通网盘直链:智能解析工具使用指南
高效获取城通网盘直链:智能解析工具使用指南 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘的下载限制而烦恼吗?ctfileGet是一款专为突破城通网盘下载限制而设计…...
DeepChat案例分享:供应链异常描述→根因推测→应急方案建议三级输出
DeepChat案例分享:供应链异常描述→根因推测→应急方案建议三级输出 1. 案例背景与场景价值 供应链管理是企业运营的核心环节,但异常情况时有发生。传统的异常处理流程往往需要多个部门协作,耗时耗力且容易出错。DeepChat基于本地部署的Lla…...
Llama Factory零代码微调大模型:5分钟上手Qwen实战教程
Llama Factory零代码微调大模型:5分钟上手Qwen实战教程 1. 前言:为什么选择Llama Factory? 大模型微调一直是AI工程师的必备技能,但传统方法需要编写大量代码,配置复杂环境,让很多初学者望而却步。Llama …...
