首页 > 其他分享 >子数组异或和问题

子数组异或和问题

时间:2024-08-04 09:19:22浏览次数:5  
标签:int sum 问题 2024.8 异或 数组 长度

2024.8.4

ABC E - Xor Sigma Problem

题意:给一个数组,算出长度大于1的连续子数组的异或值的总和。

思路:设\(s_i\)为前 \(i\) 个元素的异或,则x到y这一段的值为\(s_y\oplus s_{x-1}\),而题目要求数组长度大于1,所以枚举到 \(i\) 时,记录前 \(i-2\) 个前缀异或和。

代码

//2024.8.3
int n,m,k;
int a[N],sum[N];
int b[35];
void solve(){
	
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	
	for(int i=0;i<32;i++) b[i]=0;
	int res=0;
	for(int i=1;i<=n;i++){
		
		sum[i]=sum[i-1]^a[i];
		if(i>=3){
			for(int j=0;j<32;j++){
				int x = sum[i-2]&(1<<j),y = sum[i]&(1<<j);
				if(x!=0) b[j]++;
				if(y!=0) 
				{
					res+=(1<<j)*(i-2-b[j]);
				}
				else res+=(1<<j)*b[j];
			}
		}
		if(i>=2) res+=sum[i];
//		for(int j=0;j<32;j++) cout<<b[j]<<" ";
//		cout<<endl;
//		cout<<res<<" "<<sum[i]<<endl;
	}
	cout<<res<<endl;
}

标签:int,sum,问题,2024.8,异或,数组,长度
From: https://www.cnblogs.com/LIang2003/p/18341449

相关文章

  • C++__位运算符:异或运算符 ^
    目的:     了解异或运算符的定义、性质及用法。定义:    二元运算符,符号为^,与位与、位或不同的是,它在二进制中为相同为0,不同为1。而且它还满足这几种运算规则:        1、任何数^0都等于它本身;    2、两个相同的数异或结果为0;    ......
  • STM32卡死、跑飞如何调试确定问题
    目录前言一、程序跑飞原因二、调试工具2.1Registers工具2.2Memory工具2.3 Disassembly工具2.4 CallStack工具三、找到程序跑飞位置方式一、方式二、前言我们初学STM32的时候代码难免会出现疏忽,导致程序跑飞,不再正常运行,那么都是什么情况会导致STM32程序跑飞......
  • 关于SRIO链路复位问题的总结
    1、当SRIO进行初始化时,首先会port-initialized(端口成功初始化)拉高随后link-initialized(链路被成功初始化)拉高。特别注意的是link-initialized表示已接收到七个连续的无差错控制符号,并且已经发送了15个连续符号。如下仿真图所示。2、Link_reset我们应该监视phy_rcvd_link_rese......
  • 使用标准的 window.location.href 实现页面跳转,如何解决导航栏和tab未同步更新的问题
    在某些情况下,当你使用​​window.location.href​​进行页面跳转时,导航栏和选项卡(tab)可能不会同步更新,导致用户体验不一致。要解决这个问题,可以采用以下几种方法:方法1:使用URL参数和JavaScript处理同步通过在URL中添加参数,来记录当前的导航状态和标签页状态,然后在页面......
  • 数组和字符串
    数组简介1.LeetCode1991找到数组的中间位置方法1:前缀和classSolution{publicintfindMiddleIndex(int[]nums){inttol=0,s=0;for(intnum:nums)tol+=num;for(inti=0;i<nums.length;i++){......
  • 2024-08-03:用go语言,给定一个从 0 开始的字符串数组 `words`, 我们定义一个名为 `isPref
    2024-08-03:用go语言,给定一个从0开始的字符串数组words,我们定义一个名为isPrefixAndSuffix的布尔函数,该函数接受两个字符串参数str1和str2。当str1同时是str2的前缀和后缀时,函数返回true;否则返回false。例如,isPrefixAndSuffix("aba","ababa")返回true,因为"ab......
  • @ConfigurationProperties注解获取为null的问题或者获取不到值的问题
    结论:set方法不能被static修饰、不能被private修饰、不能被protect修饰,不能被abstract修饰,不能是Object和Class理论依据:1、springboot源码 JavaBeanBinder文件下的isCandidate方法privatebooleanisCandidate(Methodmethod){intmodifiers=method.g......
  • 57_2设置Servlet模板、Servlet线程安全问题、跳转
    设置Servlet模板再创建类就有了模板代码#if(${PACKAGE_NAME}&&${PACKAGE_NAME}!="")package${PACKAGE_NAME};#end#parse("FileHeader.java")importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servl......
  • C语言基础8数组
    什么是数组数组是相同类型,有序数据的集合。数组的特征数组中的数据被称为数组的元素,是同构的数组中的元素存放在内存空间里  衍生概念:下标(索引)下标或索引代表了数组中元素距离第一个元素的偏移位置数组中元素的地址值,下标越大,地址值越大。(每一块内存空间都有一个独有的......
  • Python学习中最常见的10个列表操作问题
    列表是Python中使用最多的一种数据结果,如何高效操作列表是提高代码运行效率的关键,这篇文章列出了10个常用的列表操作,希望对你有帮助。1、迭代列表时如何访问列表下标索引普通版:items=[8,23,45]forindexinrange(len(items)):print(index,"-->",items[index])​......