zoukankan      html  css  js  c++  java
  • ARC 098 D

    Problem Statement

    There is an integer sequence A of length N.

    Find the number of the pairs of integers l and r (1≤lrN) 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

    Input is given from Standard Input in the following format:

    N
    A1 A2  AN
    

    Output

    Print the number of the pairs of integers l and r (1≤lrN) that satisfy the condition.

    Sample Input 1

    4
    2 5 4 6
    

    Sample Output 1

    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.

    Sample Input 2

    9
    0 0 0 0 0 0 0 0 0
    

    Sample Output 2

    45
    

    Sample Input 3

    19
    885 8 1 128 83 32 256 206 639 16 4 128 689 32 8 64 885 969 1
    

    Sample Output 3

    37


    发现 xor 0是没有影响的,所以可以把0忽视掉(用一个链表一样的东西)。
    因为一旦有两个数 a[i] & a[j] != 0,那么就是不满足的,所以不算0的话长度一定不超过20,所以直接暴力做就行了。

    #include<cstring>
    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<algorithm>
    #include<ctime>
    #define ll long long
    using namespace std;
    const int maxn=200005;
    
    int n,a[maxn],lef[maxn];
    ll ans=0;
    
    int main(){
    	scanf("%d",&n);
    	for(int i=1,las=0;i<=n;i++){
    		scanf("%d",a+i),lef[i]=las;
    		if(a[i]) las=i;
    	}
    	
    	for(int i=1,now,j;i<=n;i++){
    		now=a[i];
    		
    		for(j=lef[i];j;now^=a[j],j=lef[j]) if(now&a[j]) break;
    		
    		ans+=(ll)(i-j);
    		
    	}
    	
    	cout<<ans<<endl;
    	return 0;
    }
    

      

     
  • 相关阅读:
    《程序员修炼之道——从小工到专家》读后感二
    2019.10.14课堂总结
    《程序员修炼之道——从小工到专家》读后感一
    2019.09.23课堂总结
    回文序列判断
    动手动脑
    2018/10/21动手动脑及类的创建
    动手动脑-java重载
    第二次上机实验体会
    Java第一次上机实验源代码
  • 原文地址:https://www.cnblogs.com/JYYHH/p/9095418.html
Copyright © 2011-2022 走看看