Xor Sum 2二分/尺取 区间异或和等于区间和的方案数

2023-11-10

题目描述

There is an integer sequence A of length N.
Find the number of the pairs of integers l and r (1≤l≤r≤N) that satisfy the following condition:
Al xor Al+1 xor … xor Ar=Al + Al+1 + … + Ar
Here, xor denotes the bitwise exclusive OR.

Definition of XOR
Constraints
1≤N≤2×105
0≤Ai<220
All values in input are integers.

输入

Input is given from Standard Input in the following format:
N
A1 A2 … AN

输出

Print the number of the pairs of integers l and r (1≤l≤r≤N) that satisfy the condition.
样例输入 Copy
4
2 5 4 6
样例输出 Copy
5

提示

(l,r)=(1,1),(2,2),(3,3),(4,4) clearly satisfy the condition. (l,r)=(1,2) also satisfies the condition, since A1 xor A2=A1 + A2=7. There are no other pairs that satisfy the condition, so the answer is 5.

求出有多少个区间(l,r) 满足区间的异或和等于区间和

区间异或和 与 区间和 在处理完前缀之后,会满足:

a[l] + a[l+1] + .... == sum[r] - sum[l-1]
a[l] ^ a[l+1] ^ ... == xorSum[r] ^ xorSum[l-1]

对于一个左端点l和右端点r,如果说l->r之间满足区间异或和等于区间和,那么说从l -> r-1也是满足的,所以说此时对答案的贡献便是区间的长度r - l + 1,我们只需要找满足情况的最右端的端点就好,然后统计对答案的贡献

区间的个数会爆掉int,记得开long long
二分的时候直接将l or r 当成区间的端点可能不太准确,需要将每次的mid用一个变量记录下来
二分代码:

typedef int itn;
int n,k;
ll a[maxn];
ll s[maxn];
ll sxor[maxn];
int main()
{
	n = read;
	for(int i=1;i<=n;i++) a[i] = read;
	for(int i=1;i<=n;i++){
		s[i] = s[i-1] + a[i];
		sxor[i] = sxor[i-1] ^ a[i];
	}
	ll ans = 0;
	for(int i=1;i<=n;i++){
		int l = i,r = n;
		int t = 0;
		while(l <= r){
			int md = (r + l) >> 1;
			if(s[md] - s[i-1] == (sxor[md] ^ sxor[i-1])){
				l = md + 1;
				t = md;
			}
			else r = md - 1;
		}
		ans += t - i + 1;
	}
	cout << ans << endl;
    return 0;
}

尺取代码:

typedef int itn;
int n,k;
ll a[maxn];
ll s[maxn];
ll sxor[maxn];
int main()
{
    n = read;
    for(int i=1;i<=n;i++) a[i] = read;
    ll ans = 0;
    for(int i=1;i<=n;i++) s[i]=s[i-1]+a[i],sxor[i] = sxor[i-1] ^ a[i];
    ll sum = 0;
    int l = 1;
    for(int i=1;i<=n;i++){
        while((sum^a[i]) != sum + a[i]){
            sum ^= a[l];
            l ++;
        }
        sum ^= a[i];
        ans += i - l + 1;
    }
    cout << ans <<endl;
    return 0;
}
 
/**************************************************************
    Problem: 7731
    Language: C++
    Result: 正确
    Time:28 ms
    Memory:25468 kb
****************************************************************/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xor Sum 2二分/尺取 区间异或和等于区间和的方案数 的相关文章

  • 2017年蓝桥杯B组C/C++省赛-K倍区间

    题目 题解 思维 暴力的话是会超时的 但也可以骗点分 采用差分数组暴力 讲一下AC思路 统计出来每个前缀和取模 k k k后结果的个数 比如 c n t
  • UPC-混合训练第十五场

    gift 题目描述 战争结束 A国和B国的元首决定两国友好相处 于是城市之间就有互相送礼的情况 参与这次相互协助计划中有n个A国的城市和m个B国的城市 作为A国的重臣 小Q了解到每一个A国的城市送出了ai份礼物 B国的城市收到了bi份礼物
  • UPC——放牛奶的冰箱(二分法)

    题目描述 冬冬在古子城购买了一台冰箱 冰箱内部可以表示为高度为h 深度为1 宽度为2的矩阵 最初冰箱底部只有一个架子 但冬冬可以在任何一个格子顶部放隔板 隔板的宽为2 不占用任何空间 将冰箱内部分隔成上 下两部分 冬冬有n瓶牛奶要按顺序放入
  • 2018年蓝桥杯省赛-日志统计

    题目 题目链接 题解 贪心 尺取 首先按照时间从小到大 对输入的每一组 t s ts ts和 i d id id进行排序 遍历每一对 取当
  • 2020年蓝桥杯国赛-答疑

    题目 题目链接 题解 贪心 有点像 排队打水 比较好想 而且我甚至都能证明 贪心思路 按照 s a e s a e s a e 从小到大排序即可 证明 首先 每个人的
  • Codeforces 1554C - Mikasa MEX

    input 5 3 5 4 6 3 2 69 696 123456 654321 output 4 3 0 640 530866 给出n m从n 0 gt n m中最小为出现的非负整数 int main int read while int
  • 1010 Radix (25 分)

    题目 题目链接 题解 二分 数学 先说几点注意事项 开 LL 最高进制不是35 可以更高 枚举可能的进制时存在爆LL的情况 整体思路 先计算出知道进制的那个数对应的十进制数 二分进制 找到某个进制使得另一个数对应的十进制数与已知的十进制数相
  • Codeforces Round #723 (Div. 2)B. I Hate 1111

    Description You are given an integer x Can you make x by summing up some number of 11 111 1111 11111 You can use any num
  • UPC山头狙击战--二分

    题目描述 Lucky为了掩护大部队 单枪匹马同敌人周旋 后来被敌人包围在某山头 等等 为什么怎么听怎么像狼牙山五壮士 不过不用着急 这次Lucky携带了足够的弹药 完全可以将涌上来的敌人一个一个干掉 Lucky是个神枪手 只要他的枪膛中有子
  • Group Project-思维

    链接 来源 牛客网 题目描述 The big day has fifinally arrived today you are going to form groups of two in which you will do the end
  • edu99 div.2 Sequence and Swaps优雅的暴力

    time limit per test1 5 seconds memory limit per test512 megabytes inputstandard input outputstandard output Example inpu
  • UPC思维题--移动

    题目描述 考虑333的立方体 有六个面 每个面有九个正方形 染色方法如下 角上的方格是red 中心是green 其他为blue 初始有一个机器人站在立方体顶面中心 面朝一个blue方格 它将接受到一系列如下指令 L 左转90度 R 右转90
  • CodeForces 920C Swap Adjacent Elements

    题目大意 题目链接 给定一个序列 这个序列可以理解为一个1 n的全排列 再给出一个01串 1表示可以将索引i和i 1进行交换 且交换可以发生任意次 0表示不可以 问最后能不能将序列升序排列 题解 几乎 秒杀 因为简单 判断每个索引处的数能不
  • APAC 2013 部分题解

    目录 A The Alphabet Sticker C Increasing Shortest Path D Cup of Cowards E Balloons Colors F NASSA s Robot G The Stones Gam
  • 蓝桥杯2019年第十届省赛真题-扫地机器人

    题目 题目链接 题解 二分 贪心 二分模板 看到这道题第一时间想到的就是二分和动规 仔细一看二分有戏 能check出来 所以决定用二分好好想想 主要是因为我动规太菜了 怕了 二分时间 准确的说我们二分的不是时间 而是覆盖范围 也就是枚举每个
  • Xor Sum 2二分/尺取 区间异或和等于区间和的方案数

    题目描述 There is an integer sequence A of length N Find the number of the pairs of integers l and r 1 l r N that satisfy th
  • AtCoder Beginner Contest 203 Pond(二分+二维前缀和)

    样例输入 样例1 3 2 1 7 0 5 8 11 10 4 2 样例2 3 3 1 2 3 4 5 6 7 8 9 样例输出 样例1 4 样例2 5 据说这个题用对顶堆维护被卡了 先挂一手官方该题题解链接 大体思路 二分 将原矩阵根据二分
  • 蓝桥杯2019年第十届省赛真题-Fibonacci 数列与黄金分割

    题目 题目链接 题解 我未曾设想的道路 我居然以为是高精度的矩阵快速幂 差点心态崩了 直接看了题解 1 50 打个表 发现到20 小数点后八位就不变了 所以 解决 代码 include
  • 2021-08-03训练记录

    2021 08 03训练记录 Magic Line String Invasion A B C 小biu放牛 小A的游戏 A B C Magic Line 样例输入 1 4 0 1 1 0 1 0 0 1 样例输出 1 999000000
  • Early Orders单调栈

    链接 题目描述 You are given a list of integers n and a number k It is guaranteed that each i from 1 to k appears in the list a

随机推荐

  • angular-cli中引入ng-zorro-antd(蚂蚁框架)

    首先你要确保angular cli环境搭建成功 第一步 进入项目文件夹 执行以下命令后将自动完成 ng zorro antd 的初始化配置 包括引入国际化文件 导入模块 引入样式文件等工作 ng add ng zorro antd 安装完成
  • 谷歌chrome编辑css样式不显示

    最近在用vscode编辑css代码的时候使用 在IE浏览器 qq浏览器 等其他浏览器上都可以显示 但是用谷歌浏览器没有显示任何效果 这里我在网上找到的原因是 谷歌浏览器会缓存页面的原css 要用Ctrl F5才可以重新加载修改后的css样式
  • 分区索引笔记(三)--全局分区索引

    全局分区索引在一个索引分区中包含来自多个表分区的键 一个全局分区索引的分区键是分区表中不同的或指定一个范围的值 在创建全局分区索引时 必须定义分区键的范围和值 全局索引只能是B树索引 Oracle在默认情况下不会维护全局分区索引 如果一个分
  • MPU6050使用心得(简单分享一下)

    前言 选用MPU6050做 倾斜检测 功能 前期准备 开发板 正点原子STM32F103 精英版 STM32F103ZET6 模块 GY 521 MPU6050 其他 杜邦线若干 烧录线 FlyMcu Keil5 正点原子开发板配套的套件
  • 镜头景深计算公式的推导

    景深是指成像画面中最近清晰点到最远的清晰点之间的范围 由于传感器或胶片的分辨率限制 或者照片冲洗放大后在一定距离观看时 受到人眼的分辨率极限限制 通常会将清晰这一概念与底片上一定尺寸的弥散斑大小相关联 按照传统的景深定义 物距为u1的点光源
  • IDEA 卡死的几种解决方案

    idea最为最为流行的Java开发工具其智能化提示对于开发人员非常友好 大大提高开发效率 不过我们在平时开发的时候不可避免的遇到idea卡死的情况 以下是我在平时遇到卡死的情况下的解决方法 1 调大idea内存配置参数 修改完后保存重启 X
  • 常用距离算法 (原理、使用场景、Python实现代码)

    距离度量是有监督和无监督学习算法的基础 包括k近邻 支持向量机和k均值聚类等 距离度量的选择影响我们的机器学习结果 因此考虑哪种度量最适合这个问题是很重要的 因此 我们在决定使用哪种测量方法时应该谨慎 但在做出决定之前 我们需要了解距离测量
  • 天拓分享:关于S7-1200和S7-300之间的通信

    1 S7 1200 的PROFINET 通信口 S7 1200 CPU 本体上集成了一个 PROFINET 通信口 支持以太网和基于 TCP IP 的通信标准 使用这个通信口可以实现 S7 1200 CPU 与编程设备的通信 与hmi触摸屏
  • 如何在 Debian 11 上设置一个静态 IP 地址

    当你在电脑上安装一个新的操作系统时 DHCP服务器会给你分配一个动态IP地址 然而 在各种情况下 你可能需要在你的机器上设置一个静态IP地址 例如 当你正在托管一个网络服务器 或者任何服务需要一个IP地址而不是域名 或者在你即将授予某人远程
  • LayoutParams布局

    AbsoluteLayout LayoutParams可以重新设置坐标 然后调用setLayoutParamsLinearLayout LayoutParams可以调用setMargins 来移动控件位置比如在调用rootLayout ad
  • VSCode的C/C++环境初始化(2022版)

    提前说明 如果中间 VSCode 提示要装插件 直接点击安装推荐的第一个即可 下拉框有 g 编译 gdb 调试 可以盲选 第一步 下载MinGW64 下载地址 https sourceforge net projects mingw w64
  • (十五)Mybatis当中一级二级缓存用法详解

    学习Mybatis一级二级缓存看这一篇足够了 写的非常详细 用法及代码示例都写出来了 对大家的学习或者工作具有一定的参考学习价值 需要的朋友们下面随着小编来一起学习学习吧 目录 一级缓存 一级缓存使用示例 一级缓存失效示例 1 sqlSes
  • mariadb之半同步

    补充说明 做的时候楼主没看清楚版本号 10 2以前是my conf 以后是my conf d server conf 楼主本人是写到了server这个文件里 请大家注意 可能不显示模式的原因可能就是写错配置文件了 等我明天重新做一遍 看看有
  • java版4人过桥问题

    夜晚 桥头有 4个人在一起准备过桥 这些人中只有一个人有手电筒 从桥头走到桥尾一次最多只能俩个人同时行进 每个人单独过桥的时间可能不一样 如果两个人在一起走 则这次的花费时间是走的最慢的那个人 假如现在四个人单独过桥的时间分别是 1 2 5
  • 管理员后台页面html代码,HTML5技术实现的管理员后台模板界面

    实例简介 一套采用了CSS3和HTML5技术实现的后台管理界面 不具备具体的管理功能 只是一个界面 但使用了最新的HTML5技术 网页上有超多你见不到的新效果 新形式 包括图表等 是下一个WEB技术的革命创新 有兴趣的可不要错过哦 学习HT
  • 安装某些工具不能用时,可能环境变量出现问题

    安装某些工具不能用时 可能环境变量出现问题 尝试使用 echo PATH 查看在环境中的变量 如果环境中没有该变量 退出重进 还是没有就或者手动添加
  • 事件内核对象 CreateEvent

    事件内核对象是在线程同步时比较常用的内核对象 一个事件内核对象的触发表示一个操作已经完成 有两种类型的事件内核对象 手动重置事件和自动重置事件 当一个手动重置对象被触发的时候 正在等待该事件的所有线程都将变成可调度状态 而当一个自动重置事件
  • 互联网+国家战略-整理

    互联网 国家战略 前言 互联网 普惠经济 跨界 融合 连接一切 互联网 的密码 第一篇 互联网 纳入国家计划 什么是互联网 怎么理解 加什么 互联网 与国家影响力 互联网 融合共识 协同行动 互联网 六大特征 跨界融合 创新驱动 重塑结构
  • 结构体定义struct和typedef struct的区别(重新整理版)

    1 结构体的定义 允许用户自己建立由不同类型数据组成的组合型的数据结构 它称为结构体 实际上应称为 结构体类型 2 struct的用法 下面以一个结构体实例来说明一下 struct os tcb OS STK OSTCBStkPtr OS
  • Xor Sum 2二分/尺取 区间异或和等于区间和的方案数

    题目描述 There is an integer sequence A of length N Find the number of the pairs of integers l and r 1 l r N that satisfy th