当前位置: 首页 > news >正文

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&#xff0c;以及一个由 n 个字符组成的二进制字符串† s。 Augustin 是一个数据结构的爱好者。因此&#xff0c;他请你实现一个可以回答 q 个查询的数据结构。这里有两种类型的查询&#xff1a; Plain Text "1…...

初学python爬虫学习笔记——爬取网页中小说标题

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

The WebSocket session [x] has been closed and no method (apart from close())

在向客户端发送消息时&#xff0c;session关闭了。 不管是单客户端发送消息还是多客户端发送消息&#xff0c;在发送消息之前判断session 是否关闭 使用 isOpen() 方法...

前端实现展开收起的效果 (react)

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

ABY2.0:更低的通信开销

参考文献&#xff1a; [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.图片为本地上传的预览&#xff1a; <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.打开浏览器访问&#xff1a;192.168.2.100:8080/&#xff0c;正常可以看到以下界面...

计算机网络的故事——HTTP报文内的HTTP信息

HTTP报文内的HTTP信息 文章目录 HTTP报文内的HTTP信息一、HTTP 报文二、请求报文及响应报文的结构三、编码提升传输速率 一、HTTP 报文 HTTP报文是由多行&#xff08;CRLF作换行符&#xff09;数据构成的字符串文本&#xff0c;HTTP报文可以分为报文首部和报文主体两部分&…...

CF1120 D. Power Tree 巧妙的图论转化

传送门 [前题提要]:无 题目描述: 就是给你一棵树,然后每个点有花费,然后你可以选一个点,付费后对这个点的子树的所有叶子结点增减任意权值. 考虑有一个人会给这棵树的所有叶子结点赋值(值我们不知道),输出最小的花费,使得无论它如何赋值,我们使用上述的花 费都能使所有的叶子…...

【算法训练-字符串 三】最长公共子串、最长公共子序列

废话不多说&#xff0c;喊一句号子鼓励自己&#xff1a;程序员永不失业&#xff0c;程序员走向架构&#xff01;本篇Blog的主题是【】&#xff0c;使用【】这个基本的数据结构来实现&#xff0c;这个高频题的站点是&#xff1a;CodeTop&#xff0c;筛选条件为&#xff1a;目标公…...

lintcode 1446 · 01矩阵走路问题 【两次BFS, VIP 中等 1也计算距离,但是不入队列】

题目链接&#xff0c;描述 https://www.lintcode.com/problem/1446 给定一个大小为 n*m 的 01 矩阵 grid &#xff0c;1 是墙&#xff0c;0 是路&#xff0c;你现在可以把 grid 中的一个 1 变成 0&#xff0c;请问从左上角走到右下角是否有路可走&#xff1f;如果有路可走&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年&#xff0c;瑞典家电巨头伊莱克斯推出全球首款扫地机器人“三叶虫”。 与现在的产品相比&#xff0c;“三叶虫”靠随机碰撞的模式对空间进行清扫&#xff0c;清洁效率很低&#xff0c;市场渗透率也不高&#xff0c;但并不妨碍戴森、iRo…...

PHP NBA球迷俱乐部系统Dreamweaver开发mysql数据库web结构php编程计算机网页

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

JavaScript-----DOM元素

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

激光切割机在船舶行业的的应用有哪些

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

AFL++模糊测试

一、AFL 这里我们主要使用AFL Fuzzing 测试IOT的二进制文件&#xff0c;当我们解压提取一个固件时&#xff0c;能够获得大量的IOT二进制应用 &#xff0c;如果要进行漏洞挖掘则需要将二进制文件进行逆向分析&#xff0c;然后查找危险函数以及输入接口&#xff0c;对于一个大型的…...

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用法是用于定义一个代码块&#xff0c;这个代码块可以包含多个SQL语句&#xff0c;BEGIN END通常用于控制流程语句&#xff0c;例如IF语句、WHILE语句、TRY CATCH语句等。在BEGIN END代码块中&#xff0c;可以使用变量、函数…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

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最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

如何在网页里填写 PDF 表格?

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