QOJ.ac

QOJ

Time Limit: 2.0 s Memory Limit: 256 MB Total points: 100 Hackable ✓

#12103. Nave intergaláctica

Statistics

Se te da una secuencia $a$ de $n$ números enteros $a_1,a_2,\ldots,a_n$.

Además, se te da un conjunto $S$ de $q$ actualizaciones. Cada actualización se define mediante tres números $l$, $r$ y $x$. Una actualización consiste en aplicar la operación xor con el número $x$ a todos los números del segmento $[l,r]$ de la secuencia $a$. Formalmente, para cada $l\le i\le r$, se realiza la siguiente sustitución:

$$a_i:=a_i\oplus x$$

Para un conjunto de actualizaciones $S$, definamos $K(S)$ como la suma de $sum(i,j)^2$ sobre todos los segmentos posibles de la secuencia $a$ después de aplicar a la secuencia dada todas las actualizaciones del conjunto $S$:

$$K(S)=\sum_{1\le i\le j\le n}sum(i,j)^2$$

donde $sum(i,j)$ se define como la suma de los elementos del segmento $[i,j]$:

$$sum(i,j)=\sum_{x=i}^{j}a_x$$

Tu tarea es encontrar la suma sobre los $2^q$ subconjuntos del conjunto dado de actualizaciones $S$. Formalmente, si $P$ es el conjunto de todos los subconjuntos del conjunto $S$ de $q$ actualizaciones, debes encontrar lo siguiente:

$$\sum_{subset\in P}K(subset)$$

Entrada

La primera línea de la entrada contiene un único entero $n$ ($1\le n\le1000$), el número de elementos de la secuencia.

La segunda línea contiene $n$ enteros $a_1,a_2,\ldots,a_n$ separados por espacios ($0\le a_i<128$ para cada $1\le i\le n$), la secuencia dada.

La tercera línea contiene un único entero $q$ ($1\le q\le10^5$), el número de actualizaciones.

Cada una de las siguientes $q$ líneas contiene tres enteros $l$, $r$ y $x$ separados por espacios ($1\le l\le r\le n$, $0\le x<128$), que describen las actualizaciones.

Salida

Imprime un único entero: la respuesta al problema. Como la respuesta puede ser muy grande, imprímela módulo $10^9+7$.

Subtareas

Este problema consta de nueve subtareas:

  1. $1\le n\le10$, $1\le q\le10$, $0\le a_i,x<128$ para todo $1\le i\le n$. Vale 4 puntos.
  2. $1\le n\le100$, $1\le q\le10$, $0\le a_i,x<128$ para todo $1\le i\le n$. Vale 5 puntos.
  3. $1\le n\le100$, $1\le q\le100000$, $0\le a_i,x<32$ para todo $1\le i\le n$. Se garantiza que la longitud de todos los segmentos de actualización es $1$. Vale 6 puntos.
  4. $1\le n\le1000$, $1\le q\le500$, $0\le a_i,x<128$ para todo $1\le i\le n$. Se garantiza que los segmentos de actualización no se intersecan dos a dos. Vale 9 puntos.
  5. $1\le n\le30$, $1\le q\le20$, $0\le a_i,x<32$ para todo $1\le i\le n$. Vale 8 puntos.
  6. $1\le n\le30$, $1\le q\le5000$, $0\le a_i,x<32$ para todo $1\le i\le n$. Vale 11 puntos.
  7. $1\le n\le300$, $1\le q\le300$, $0\le a_i,x<128$ para todo $1\le i\le n$. Vale 19 puntos.
  8. $1\le n\le500$, $1\le q\le100000$, $0\le a_i,x<128$ para todo $1\le i\le n$. Vale 30 puntos.
  9. $1\le n\le1000$, $1\le q\le100000$, $0\le a_i,x<128$ para todo $1\le i\le n$. Vale 8 puntos.

Ejemplos

Entrada 1

2
1 3
1
1 2 2

Salida 1

52

Entrada 2

5
1 2 3 4 5
0

Salida 2

1001

Nota

La operación xor es el OR exclusivo bit a bit.

En el primer ejemplo, hay $2^1=2$ secuencias posibles después de aplicar las actualizaciones: aplicando la única operación dada y sin aplicarla. En ambas secuencias, las sumas resultantes son iguales a $26$.

En el segundo ejemplo, el conjunto $S$ está vacío y el conjunto de todos sus subconjuntos contiene un único elemento $\varnothing$, el conjunto vacío; es decir, no hay actualizaciones y debes encontrar $K(\varnothing)$ para la secuencia $a$ dada.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.