题解:CF1968F(Equal XOR Segments)
题解:CF1968F(Equal XOR Segments)
题目翻译:定义一个序列是好,当且仅当可以将其分成大于 1 1 1 份,使得每个部分的异或和相等。现在给定一个长度为 n n n 的序列 a a a,以及 q q q 次查询,每次查询中,询问序列 a a a 的第 l l l 到 r r r 位是不是好的。( n ≤ 2 ⋅ 1 0 5 n\leq2\cdot10^5 n≤2⋅105 并且 q ≤ 2 ⋅ 1 0 5 q\leq2\cdot10^5 q≤2⋅105)
第一步,要缩小范围。我们不难发现这个段数要么是 2 2 2,要么是 3 3 3,如果有多于 4 4 4 段,那么将其中任意三段合并,根据异或的性质可以证明对最终结果没有影响,这样一直合并,一直将段数减少 2 2 2,早晚能变成 2 2 2 或 3 3 3 段。
第二步,考虑如何求答案。如果询问道一段区间异或起来(用前缀异或和 s s s 维护)为 0 0 0,那么一定可以分成两段;否则也就是难点——分成三段的情况。那么就相当于找到两个数 x x x 和 y y y( l < x < y < r l<x<y<r l<x<y<r)使得 s x ⨁ s l − 1 = s y ⨁ s x = s r ⨁ s y s_x\bigoplus s_{l-1}=s_y\bigoplus s_x=s_r\bigoplus s_y sx⨁sl−1=sy⨁sx=sr⨁sy。这个式子就等价于找到 s y = s l − 1 s_y=s_{l-1} sy=sl−1 以及 s x = s r s_x=s_r sx=sr。那么我们用一个 map<int, vector<int>> 存储某一个数在 s s s 中出现在哪些位置,然后用 upper_bound 和 lower_bound 二分求出能否找到合理的 x x x 和 y y y 并且保证 x < y x<y x<y。比如说,我们在等于 s l − 1 s_{l-1} sl−1 的 vector 里面找到小于 r r r 最大的 y y y,在等于 s r s_r sr 的 vector 里面找到大于 l l l 里最小的 x x x,判断,如果 l < x < y < r l<x<y<r l<x<y<r 就可以,否则就不行。
具体见代码。
#include <bits/stdc++.h>
#define N 220000
using namespace std;
int t, n, q, a[N], l, r;
int s[N];
map<int, set<int>> id;
int main() {scanf("%d", &t);while (t--) {id.clear();scanf("%d%d", &n, &q);for (int i = 1; i <= n; i++) {scanf("%d", &a[i]);s[i] = s[i - 1] ^ a[i];if (id.find(s[i]) == id.end()) {id[s[i]] = {i};} else {id[s[i]].insert(i);}}for (int i = 1; i <= q; i++) {scanf("%d%d", &l, &r);if ((s[r] ^ s[l - 1]) == 0) {printf("Yes\n");} else {auto u = id[s[l - 1]].upper_bound(r - 1);if (u == id[s[l - 1]].begin()) {printf("No\n");} else {u--;auto v = id[s[r]].lower_bound(l);if (v != id[s[r]].end() && l <= *v && *v < *u && *u < r) {printf("Yes\n");} else {printf("No\n");}}}}}return 0;
}
相关文章:
题解:CF1968F(Equal XOR Segments)
题解:CF1968F(Equal XOR Segments) 题目翻译:定义一个序列是好,当且仅当可以将其分成大于 1 1 1 份,使得每个部分的异或和相等。现在给定一个长度为 n n n 的序列 a a a,以及 q q q 次查询…...
Python操作MySQL实战
文章导读 本文用于巩固Pymysql操作MySQL与MySQL操作的知识点,实现一个简易的音乐播放器,拟实现的功能包括:用户登录,窗口显示,加载本地音乐,加入和删除播放列表,播放音乐。 点击此处获取参考源…...
【Linux系统】进程间通信
本篇博客整理了进程间通信的方式管道、 system V IPC的原理,结合大量的系统调用接口,和代码示例,旨在让读者透过进程间通信去体会操作系统的设计思想和管理手段。 目录 一、进程间通信 二、管道 1.匿名管道 1.1-通信原理 1.2-系统调用 …...
北大国际医院腹膜后纤维化课题组 多学科协作开辟治疗新径
腹膜后纤维化(Retroperitoneal Fibrosis,简称RPF)是一种罕见的自身免疫性疾病,其核心特征是纤维组织的异常增生与硬化。这种疾病主要影响肾脏下方的腹主动脉和髂动脉区域,增生的纤维组织会逐渐压迫周围的输尿管和下腔静脉,从而导致一系列并发症,包括主动脉瘤、肾功能衰竭等,甚至…...
面试数据库八股文十问十答第七期
面试数据库八股文十问十答第七期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)索引是越多越好吗ÿ…...
【C++题解】1133. 字符串的反码
问题:1133. 字符串的反码 类型:字符串 题目描述: 一个二进制数,将其每一位取反,称之为这个数的反码。下面我们定义一个字符的反码。 如果这是一个小写字符,则它和字符 a 的距离与它的反码和字符 z 的距离…...
【Python编程实战】基于Python语言实现学生信息管理系统
🎩 欢迎来到技术探索的奇幻世界👨💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…...
AI网络爬虫:批量爬取电视猫上面的《庆余年》分集剧情
电视猫上面有《庆余年》分集剧情,如何批量爬取下来呢? 先找到每集的链接地址,都在这个class"epipage clear"的div标签里面的li标签下面的a标签里面: <a href"/drama/Yy0wHDA/episode">1</a> 这个…...
md5强弱碰撞
一,类型。 1.弱比较 php中的""和""在进行比较时,数字和字符串比较或者涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。按照此理,我们可以上传md5编码后是0e的字符串,在…...
【Docker故障处理篇】运行容器报错“docker: failed to register layer...file exists.”解决方法
【Docker故障处理篇】运行容器报错“docker: failed to register layer...file exists.” 一、Docker环境介绍2.1 本次环境介绍2.2 本次实践介绍二、故障现象2.1 运行容器消失2.2 重新运行容器报错三、故障分析四、故障处理4.1 停止 Docker 服务:4.2 备份重要数据4.3 清理冲突…...
小红书-社区搜索部 (NLP、CV算法实习生) 一面面经
😄 整个流程按如下问题展开,用时60min左右面试官人挺好,前半部分问问题,后半部分coding一道题。 各位有什么问题可以直接评论区留言,24小时内必回信息,放心~ 文章目录 1、自我介绍2、介绍下项目:微信-多模态小视频分类2.1、看你用了cross-att来融合多模态信息,cross…...
解读makefile中的.PHONY
在 Makefile 中,.PHONY 是一个特殊的目标,用于声明伪目标(phony target)。伪目标是指并不代表实际构建结果的目标,而是用来触发特定动作或命令的标识。通常情况下,.PHONY 会被用来声明一组需要执行的动作&a…...
linux配置防火墙端口
配置防火墙,添加或删除端口,需要有root权限。 防火墙常用命令如下: 1.查看防火墙状态: systemctl status firewalld active(running):开启状态,正在运行中 inactive(dead):关闭状态ÿ…...
sklearn线性回归--岭回归
sklearn线性回归--岭回归 岭回归也是一种用于回归的线性模型,因此它的预测公式与普通最小二乘法相同。但在岭回归中,对系数(w)的选择不仅要在训练数据上得到好的预测结果,而且还要拟合附加约束,使系数尽量小…...
三十一、openlayers官网示例Draw Features解析——在地图上自定义绘制点、线、多边形、圆形并获取图形数据
官网demo地址: Draw Features 先初始化地图,准备一个空的矢量图层,用于显示绘制的图形。 initLayers() {const raster new TileLayer({source: new XYZ({url: "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/…...
医疗科技:UWB模块为智能医疗设备带来的变革
随着医疗科技的不断发展和人们健康意识的提高,智能医疗设备的应用越来越广泛。超宽带(UWB)技术作为一种新兴的定位技术,正在引领着智能医疗设备的变革。UWB模块作为UWB技术的核心组成部分,在智能医疗设备中发挥着越来越…...
Java面试题大全(从基础到框架,中间件,持续更新~~~)
从Java基础到数据库,Spring,MyBatis,消息中间件,微服务解决全部Java面试过程中的问题。(持续更新~~) Java基础 2024最新Java面试题——java基础 MySQL基础 mysql基础知识——适合不太熟悉数据库知识的小…...
零知识证明在隐私保护和身份验证中的应用
PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。 隐私保护和身份验证是现代社会中的关键问题,尤其是在数字化时代。零知识证明(Zero-Knowledge Proofs&…...
15.微信小程序之async-validator 基本使用
async-validator是一个基于 JavaScript 的表单验证库,支持异步验证规则和自定义验证规则 主流的 UI 组件库 Ant-design 和 Element中的表单验证都是基于 async-validator 使用 async-validator 可以方便地构建表单验证逻辑,使得错误提示信息更加友好和…...
元宇宙vr科普馆场景制作引领行业潮流
在这个数字化高速发展的时代,北京3D元宇宙场景在线制作以其独特的优势,成为了行业内的创新引领者。它能够快速完成空间设计,根据您的个性化需求,轻松设置布局、灯光、音效以及互动元素等,为您打造出一个更加真实、丰富…...
孩子总是注意力不集中,感统训练有没有必要做?
绝大多数情况下没有必要。注意力不集中的根源很少是感觉统合失调,感统训练对此基本无效。只有当孩子经过专业评估,被明确诊断为感觉统合失调,且注意力问题确实由感觉处理混乱引起时,才值得考虑,但效果也有限。感统训…...
ARM核心板存储选型实战:从DDR到eMMC的避坑指南
1. 项目概述:一个被低估的硬件选型难题在嵌入式系统开发,尤其是基于ARM架构的工控和核心板设计中,存储选型常常被新手甚至一些有经验的工程师视为一个“小问题”。不就是选个Flash和RAM吗?很多人会这么想。然而,在我十…...
如何选择一款既能过查重又能过AI检测的降重软件?(知网、维普、万方、格子达等)经验分享
毕业季与投稿季,论文查重率飙升、AIGC 疑似率居高不下,是无数人的噩梦。2026 年,国内超 82% 高校已实施 “查重率 AIGC 率” 双控标准,知网、维普、万方、格子达等平台算法全面升级,传统同义词替换早已失效。想要高效…...
Awesome-Dify-Workflow:重新定义AI工作流编排的模块化解决方案
Awesome-Dify-Workflow:重新定义AI工作流编排的模块化解决方案 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程,自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Aweso…...
用C++模拟流感传播:从信息学奥赛题到理解传染病模型(附完整代码)
用C模拟流感传播:从信息学奥赛题到理解传染病模型(附完整代码) 流感传播模型一直是计算机模拟和算法竞赛中的经典问题。这道来自信息学奥赛的题目不仅考察了递推算法的应用,更让我们得以一窥传染病传播的基本原理。本文将带你从零…...
ZYNQ7020笔记:MIO、EMIO、GPIO的区别及应用
ZYNQ 7020 之所以强大,在于它把ARM Cortex-A9处理器系统(PS)和FPGA逻辑(PL)集成在一个芯片里。而连接PS与外部世界的,就是MIO、EMIO、GPIO。很多初学者分不清它们的区别,今天这篇文章就用最直白…...
告别Modelsim命令行!用Notepad++插件NppExec一键检查Verilog语法(附详细配置命令)
硬件工程师的效率革命:Notepad与Verilog语法检查的终极整合方案 在数字电路设计领域,Verilog作为主流硬件描述语言,其语法检查是每位工程师日常工作中不可或缺的环节。传统工作流程中,工程师们不得不在文本编辑器与EDA工具之间频繁…...
从STM32转战合泰HT32F52352:手把手教你用GPTM定时器搞定四路舵机PWM控制
从STM32到HT32F52352的平滑迁移:GPTM定时器实现四路舵机PWM控制实战 对于习惯了STM32生态的开发者而言,初次接触合泰HT32系列MCU时往往面临两个挑战:如何快速理解新芯片的架构设计,以及如何将已有的STM32开发经验有效迁移。HT32F…...
从游戏画面Bug到图形学原理:一次深度测试失败的排查与透视矫正插值的深度理解
从游戏画面Bug到图形学原理:深度测试失败的排查与透视矫正插值解析 深夜调试游戏引擎时,屏幕上的三角形边缘突然出现诡异的闪烁——这种被称为"深度冲突"的现象,往往让开发者陷入漫长的调试循环。本文将以一个实际开发中的深度测试…...
在Blender中创建逼真流体模拟:FLIP Fluids插件完全指南
在Blender中创建逼真流体模拟:FLIP Fluids插件完全指南 【免费下载链接】Blender-FLIP-Fluids The FLIP Fluids addon is a tool that helps you set up, run, and render high quality liquid fluid effects all within Blender, the free and open source 3D crea…...
