E. Data Structures Fan(思维 + 异或前缀和)
Problem - E - Codeforces
给你一个整数数组 a1, a2,..., an,以及一个由 n 个字符组成的二进制字符串† s。
Augustin 是一个数据结构的爱好者。因此,他请你实现一个可以回答 q 个查询的数据结构。这里有两种类型的查询:
Plain Text
"1 l r" (1≤l≤r≤n) — 将 l ≤ i ≤ r 的每个字符 si 替换为其相反值。也就是,将所有的 0 替换为 1,将所有的 1 替换为 0。
"2 g" (g∈{0,1}) — 计算所有满足 si=g 的索引 i 对应的数字 ai 的按位异或(bitwise XOR)值。注意,空集合的异或值被认为是等于 0。
请帮助 Augustin 回答所有的查询!
例如,如果 n=4,a=[1,2,3,6],s=1001,考虑以下一系列查询:
Plain Text
"2 0" — 我们对于满足 si=0 的索引 i 感兴趣,因为 s=1001,这些索引是 2 和 3,所以查询的答案将是 a2⊕a3=2⊕3=1。
"1 1 3" — 我们需要将字符 s1,s2,s3 替换为它们的相反值,所以在查询之前 s=1001,在查询之后:s=0111。
"2 1" — 我们对于满足 si=1 的索引 i 感兴趣,因为 s=0111,这些索引是 2, 3 和 4,所以查询的答案将是 a2⊕a3⊕a4=2⊕3⊕6=7。
"1 2 4" — s=0111 → s=0000。
"2 1" — s=0000,没有满足 si=1 的索引,所以由于空集合的异或值被认为是等于 0,这个查询的答案是 0。
† 二进制字符串是只包含字符 0 或 1 的字符串。
输入
输入的第一行包含一个整数 t (1≤t≤10^4) — 测试用例的数量。
接下来是每个测试用例的描述。
每个测试用例描述的第一行包含一个整数 n (1≤n≤10^5) — 数组的长度。
测试用例的第二行包含 n 个整数 a1,a2,...,an (1≤ai≤10^9)。
测试用例的第三行包含长度为 n 的二进制字符串 s。
测试用例的第四行包含一个整数 q (1≤q≤10^5) — 查询的数量。
测试用例的后续 q 行描述了查询。每个查询的第一个数字 tp ∈ {1,2},表示查询的类型:如果 tp=1,则紧随其后是两个整数 1≤l≤r≤n,表示应该使用参数 l,r 执行类型 1 的操作;如果 tp=2,则紧随其后是一个整数 g∈{0,1},表示应该使用参数 g 执行类型 2 的操作。
保证所有测试用例中 n 的总和不超过 10^5,并且 q 的总和不超过 10^5。
输出
对于每个测试用例中的每个类型 2 的查询,输出相应查询的答案。
示例
输入
5 5 1 2 3 4 5 01000 7 2 0 2 1 1 2 4 2 0 2 1 1 1 3 2 1 6 12 12 14 14 5 5 001001 3 2 1 1 2 4 2 1 4 7 7 7 777 1111 3 2 0 1 2 3 2 0 2 1000000000 996179179 11 1 2 1 5 1 42 20 47 7 00011 5 1 3 4 1 1 1 1 3 4 1 2 4 2 0
输出
3 2 6 7 7 11 7 0 0 16430827 47
注意
让我们分析第一个测试用例:
"2 0" — 对于满足 si=0 的索引 i,我们感兴趣的是这些查询的答案将是 a1⊕a3⊕a4⊕a5=1⊕3⊕4⊕5=3。 "2 1" — 对于满足 si=1 的索引 i,我们感兴趣的是这些查询的答案将是 a2=2。 "1 2 4" — 我们需要将字符 s2,s3,s4 替换为它们的相反值,所以在查询之前 s=01000,在查询之后:s=00110。 "2 0" — 对于满足 si=0 的索引 i,我们感兴趣的是这些查询的答案将是 a1⊕a2⊕a5=1⊕2⊕5=6。 "2 1" — 对于满足 si=1 的索引 i,我们感兴趣的是这些查询的答案将是 a3⊕a4=3⊕4=7。 "1 1 3" — s=00110 → s=11010。 "2 1" — 对于满足 si=1 的索引 i,我们感兴趣的是这些查询的答案将是 a1⊕a2⊕a4=1⊕2⊕4=7。
题解:
本来看到区间修改,一直在想用什么数据结构,最后也没想出来
赛后看别人代码,发现这是一个思维题
我们只需要记录,异或前缀和,初始为0位置的异或和,为1位置的异或和即可
如果要修改区间,根据异或前缀和我们可以很快求出那一段区间的异或和 t
s0 ^= t
s1 ^= t
为啥这样就可以?
我们以1的举例,t中可能会有此时为0,和此时为1的异或和,由于之前已经计算了,为一时的异或,再次异或,就消去了,为0的之前没有异或,异或一下刚好,而这个过程不就是反转的过程吗
为0同理
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int,int> PII;
int a[100050];
int pre[100054];
void solve()
{int n;cin >> n;for(int i = 1;i <= n;i++){cin >> a[i];}string s;cin >> s;vector<int> ans(10);s = "?" + s;for(int i = 1;i <= n ;i++){ans[s[i] - '0'] ^= a[i];pre[i] = pre[i - 1]^a[i];}int q;cin >> q;while(q--){int op,l,r;cin >> op >> l;if(op == 2){cout << ans[l] <<" ";}else{cin >> r;int t = pre[r]^pre[l - 1];ans[0] ^= t;ans[1] ^= t;}}cout <<"\n";
}
signed main()
{int t = 1;ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin >> t ; while(t--){solve();}
}
相关文章:

E. Data Structures Fan(思维 + 异或前缀和)
Problem - E - Codeforces 给你一个整数数组 a1, a2,..., an,以及一个由 n 个字符组成的二进制字符串† s。 Augustin 是一个数据结构的爱好者。因此,他请你实现一个可以回答 q 个查询的数据结构。这里有两种类型的查询: Plain Text "1…...

初学python爬虫学习笔记——爬取网页中小说标题
初学python爬虫学习笔记——爬取网页中小说标题 一、要爬取的网站小说如下图 二、打开网页的“检查”,查看html页面 发现每个标题是列表下的一个个超链接,从183.html到869.html 可以使用for循环依次得到: x range(183,600) for i in x:pr…...

The WebSocket session [x] has been closed and no method (apart from close())
在向客户端发送消息时,session关闭了。 不管是单客户端发送消息还是多客户端发送消息,在发送消息之前判断session 是否关闭 使用 isOpen() 方法...

前端实现展开收起的效果 (react)
需求背景:需要实现文本的展开收起效果,文本是一行一行的,数据格式是数组结构。 如图所示(图片已脱敏) 简单实现:使用一个变量控制展开收起效果。 展开收起逻辑部分(react) const […...

ABY2.0:更低的通信开销
参考文献: [ABY] Demmler D, Schneider T, Zohner M. ABY-A framework for efficient mixed-protocol secure two-party computation[C]//NDSS. 2015.[ABY3] Mohassel P, Rindal P. ABY3: A mixed protocol framework for machine learning[C]//Proceedings of the…...
vue项目预览图片
1.图片为本地上传的预览: <input type"file" ref"file"/> <img :src"imgUrl"/>let fr new FileReader()fr.readAsArrayBuffer(this.$refs.file.files[0])fr.addEventListener("loadend", (e) > {let buff…...

Tomcat 安装
1.关闭防火墙 2.安装JDK包 3. 4。添加环境变量 5.刷新配置文件 6.解压文件 7.启动tomcat 8. 9.编写tomcat.service文件 vim /etc/systemd/system/tomcat.service 10.刷新服务 11.打开浏览器访问:192.168.2.100:8080/,正常可以看到以下界面...

计算机网络的故事——HTTP报文内的HTTP信息
HTTP报文内的HTTP信息 文章目录 HTTP报文内的HTTP信息一、HTTP 报文二、请求报文及响应报文的结构三、编码提升传输速率 一、HTTP 报文 HTTP报文是由多行(CRLF作换行符)数据构成的字符串文本,HTTP报文可以分为报文首部和报文主体两部分&…...
CF1120 D. Power Tree 巧妙的图论转化
传送门 [前题提要]:无 题目描述: 就是给你一棵树,然后每个点有花费,然后你可以选一个点,付费后对这个点的子树的所有叶子结点增减任意权值. 考虑有一个人会给这棵树的所有叶子结点赋值(值我们不知道),输出最小的花费,使得无论它如何赋值,我们使用上述的花 费都能使所有的叶子…...

【算法训练-字符串 三】最长公共子串、最长公共子序列
废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【】,使用【】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为:目标公…...
lintcode 1446 · 01矩阵走路问题 【两次BFS, VIP 中等 1也计算距离,但是不入队列】
题目链接,描述 https://www.lintcode.com/problem/1446 给定一个大小为 n*m 的 01 矩阵 grid ,1 是墙,0 是路,你现在可以把 grid 中的一个 1 变成 0,请问从左上角走到右下角是否有路可走?如果有路可走&am…...

第一个实例:QT实现汽车电子仪表盘
目录 1.实现效果 1.1.视频演示 1.2.实现效果截图 2.生成的安装程序 3.功能概述 4.具体实现 5.QT扩展介绍 5.1.QT介绍 5.2.QT历史发展 5.3.QT平台支持 5.4.Qt Creator 5.5.优势 5.5.1.优良的跨平台特性 5.5.2.面向对象 5.5.3.丰富的 API 1.实现效果 1.1.视频演…...

【MySQL系列】MySQL的事务管理的学习(一)_ 事务概念 | 事务操作方式 | 事务隔离级别
「前言」文章内容大致是MySQL事务管理。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、事务概念二、事务的版本支持三、事务提交方式四、事务常见的操作方式4.1 事务正常操作4.2 事务异常验证 五、事务隔离级别5.1 查看与设置隔离性5.2 读未提交&…...

扫地机器人还能创新吗?云鲸给了个Yes
作者 | 辰纹 来源 | 洞见新研社 1996年,瑞典家电巨头伊莱克斯推出全球首款扫地机器人“三叶虫”。 与现在的产品相比,“三叶虫”靠随机碰撞的模式对空间进行清扫,清洁效率很低,市场渗透率也不高,但并不妨碍戴森、iRo…...

PHP NBA球迷俱乐部系统Dreamweaver开发mysql数据库web结构php编程计算机网页
一、源码特点 PHP NBA球迷俱乐部系统是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 基于PHP的NBA球迷俱乐部 二、功能介绍 1、前台主要功能: 系统首页 网站介…...

JavaScript-----DOM元素
目录 前言: 1. DOM介绍 2. 获取节点 3. 操作HTML内容 4. 监听事件 案例 5. 操作节点的标签属性 6. 操作样式 7. 创建、添加、删除节点 前言: 在此之前我们要想去操作网页元素一般是去通过CSS选择器实现的,今天我们就学习JavaScript里…...

激光切割机在船舶行业的的应用有哪些
我国享有世界工厂的美誉,是全球制造业的主力。然而,在船舶制造的关键技术领域,我国的研发投入不足,技术进步仍滞后,我国高端船舶制造的实力仍显不足。 在我国制造业全面复苏的当前背景下,“精准制作”正构成…...

AFL++模糊测试
一、AFL 这里我们主要使用AFL Fuzzing 测试IOT的二进制文件,当我们解压提取一个固件时,能够获得大量的IOT二进制应用 ,如果要进行漏洞挖掘则需要将二进制文件进行逆向分析,然后查找危险函数以及输入接口,对于一个大型的…...
C# 使用ListBox及Picturebox显示所选的任意路径文件夹下的图像
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System...
数据库: 存储过程
sql server begin end用法: SQL Server中的BEGIN END用法是用于定义一个代码块,这个代码块可以包含多个SQL语句,BEGIN END通常用于控制流程语句,例如IF语句、WHILE语句、TRY CATCH语句等。在BEGIN END代码块中,可以使用变量、函数…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...