Universal Cup Judging System

Universal Cup

時間限制: 5.0 s 記憶體限制: 1024 MB 總分: 100 可 Hack ✓
统计

Yana, Mino, White y Huzz son mejores amigos.

Mino se ha sentido confundido últimamente. Obsesionado con sus fracasos pasados en la OI, ha estado luchando por planificar su futuro mientras gestiona su apretada agenda escolar. Sus tres amigos le sugirieron que evaluara la importancia de sus tareas y las priorizara.

Supongamos que hay $n$ tareas diferentes numeradas de $1$ a $n$. Cada vez, Huzz selecciona dos tareas adyacentes, White las compara y Yana las fusiona en una sola tarea. A Mino le sorprende descubrir que este proceso forma accidentalmente un árbol de segmentos, que no necesariamente se divide por la mitad. Más precisamente, forma un árbol con $2n - 1$ nodos, donde cada subárbol corresponde a un segmento contiguo. Observa que las $n$ tareas son hojas, mientras que los otros $n - 1$ nodos tienen cada uno dos hijos. Estos nodos, que resultan de las comparaciones, definen los valores de las aristas hacia sus hijos: $0$ para el menor y $1$ para el mayor.

A Mino le gustan mucho los cálculos. Define el peso de cada tarea como la suma XOR de las aristas a lo largo del camino desde la tarea hasta la raíz. Se pregunta: si se dan los pesos, ¿de cuántas maneras se pueden construir dichos árboles y comparar a los hijos?

Una vez más, Mino no es hábil en la OI, razón por la cual ha recurrido a ti en busca de ayuda. Para simplificar el problema, solo necesitas encontrar la respuesta módulo $998,244,353$.

Entrada

La primera línea de la entrada contiene un entero positivo $n$ ($1 \le n \le 250000$), el número de tareas.

La segunda línea contiene una cadena binaria $S$ de longitud $n$, donde $S_i$ representa el XOR bit a bit (Bitwise-XOR) de todos los valores en las aristas desde la tarea $i$ hasta la raíz.

Salida

Imprime un entero, la respuesta módulo $998,244,353$.

Ejemplo

Entrada

4
0101

Salida

6

Nota

Hay $6$ maneras de construir el árbol y comparar a los hijos:

Figure 1

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.