Codeforces · 2255B
A Ribbon for Tomorrow
Cuenta cuántas cadenas binarias distintas son alcanzables al invertir subcadenas cuyos extremos contienen el mismo bit.
Problema
Se da una cadena binaria s de longitud n. Se puede aplicar la siguiente operación cualquier cantidad de veces, incluyendo cero:
- elegir dos índices
lyrtales que1 ≤ l ≤ r ≤ ny, en la cadena actual,s[l] = s[r]; - invertir el orden de los caracteres de la subcadena
s[l..r].
Determina cuántas cadenas binarias distintas pueden obtenerse a partir de s. Devuelve la respuesta módulo 998244353.
Entrada
La primera línea contiene el número de casos de prueba t.
Para cada caso de prueba:
- una línea contiene el entero
n; - la siguiente línea contiene una cadena binaria
sde longitudn.
Salida
Para cada caso de prueba, imprime un entero: el número de cadenas binarias distintas alcanzables desde s, módulo 998244353.
Rangos / restricciones
1 ≤ t ≤ 10^4.1 ≤ n ≤ 10^6.scontiene únicamente0y1y tiene longitudn.- La suma de
nsobre todos los casos de prueba no excede10^6. - Límite de tiempo: 2 segundos.
- Límite de memoria: 256 MB.
Observaciones
La condición s[l] = s[r] se evalúa sobre la cadena en su estado actual, después de todas las operaciones realizadas previamente.
Fuente original
Codeforces 2255B ↗