Xor y Sum (operación de bit)

 

título Descripción

Dada una matriz de tamaño N A, el elemento Ai i-ésimo.

Pregunté cuántos de los [LR] sub-intervalo, para cumplir con el intervalo de valores e intervalos iguales XOR y valores, a saber:

     Al xor Al + 1 xor ... xor Ar = Al + Al + 1 + ... + Ar (l + 1 representa un subíndice)
      un xor b, y a y b es el número XOR bit a bit decimal binario para obtener una nueva representación c
xor 5 y 12 se calcula como sigue:

510 = 01012

(12) 10 = (1,100) 2

01012xor11002 = (1,001) 2

(1001) 2 = (9) 10

entrada

La primera línea de un N. entero dado
La segunda fila con un determinado enteros n, es la i-ésima Ai.
^. 5 × 10 ≦ N ≦ 2
0≤A_i≤2 ^ 30

exportación

El número de sub-intervalos para satisfacer las condiciones de salida LR.

entrada de la muestra

10 
0  0  740  361  473  0  0  826  479  974


Ejemplo de salida

18

 

 

solución:

xor operación se puede considerar como no llevar adición binaria, es la adición de sí mismo para llevar sumador.

Usted puede simplemente venir a estas propiedades: Para la gama, si XOR y además responden lo mismo, entonces la respuesta es, sin duda sigue siendo el mismo rango estrecho, y si XOR y la adición de la pregunta no es lo mismo, entonces la respuesta es, sin duda ampliar la gama no es lo mismo .

Así podemos enumerar el intervalo de puntos de la derecha, para encontrar el más pequeño de la izquierda punto, este intervalo es igual o diferentes intervalos y luego en este momento el número de intervalo de legítima rango es el intervalo de la longitud correcta (dentro de la reducción de puntos de izquierda son legítimas ).

Este prefijo también puede ser pretratada y el prefijo y XOR, manteniéndola con el doble puntero.

 

 

 

1 #include <iostream>
 2 #include <algoritmo>
 3 #include <stdio.h>
 4 #include < string .h>
 5 #include < string >
 6 #include <cola>
 7 #include <stdlib.h>
 8 # incluir <math.h>
 9  #define por (i, a, b) for (int i = a; i <= b; ++ i)
 10  #define rep (i, a, b) for (int i = a ; i> = b; - i)
 11  #define inf 0xf3f3f3f
 12  #define ll largo long int 
 13  usando  espacio de nombres std;
14  int p [200 005 ];
15  int s [ 200005 ];
16  int z [ 200,005 ];
17  int main ()
 18  {
 19      int m, a;
20      cin >> m;
21      z [ 0 ] = 0 ; s [ 0 ] = 0 ;
22      por (i, 1 , m) 
 23      {
 24          cin >> a;
25          s [i] = s [i- 1 ] + a;
26          z [i] = z [i- 1] ^ A;
27      }
 28      ll l = 0 , suma = 0 ;
29      por (i, 1 , m)
 30      {
 31          mientras que ((z [i] ^ z [l]) = (s [i] -s [l])!) L ++ ;
32          suma + = i- l;
33      }
 34      cout << suma;
35      de retorno  0 ;
36 }

 

 

 

 

 

 

 

-

Supongo que te gusta

Origin www.cnblogs.com/jiamian/p/12446120.html
Recomendado
Clasificación