QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 512 MB Total points: 100

#20874. El gen «ganador»

Statistics

Tras años organizando juegos y viendo a Bessie quedar primera una y otra vez, Farmer John se da cuenta de que no puede ser casualidad. Concluye que ganar debe estar codificado en su ADN y se propone encontrar ese gen «ganador».

Diseña un proceso para identificar candidatos a ese gen. El genoma de Bessie es una cadena $S$ de longitud $N$, donde $1 \leq N \leq 3000$. Elige un par $(K,L)$ con $1 \leq L \leq K \leq N$, que indica que los genes candidatos tendrán longitud $L$ y se buscarán dentro de una subcadena mayor de longitud $K$. Toma todas las subcadenas de longitud $K$ de $S$, cada una llamada $k$-mer. Para cada $k$-mer examina todas las subcadenas de longitud $L$, elige la mínima lexicográficamente como gen candidato (la más a la izquierda en caso de empate) y añade a un conjunto $P$ su posición inicial $p_i$ en $S$, indexada desde $0$.

Como aún no ha elegido $K$ y $L$, quiere saber cuántos candidatos habrá para cada par $(K,L)$.

Para cada $v$ en $1\dots N$, ayúdalo a determinar el número de pares $(K,L)$ con $|P|=v$.

Entrada

$N$ representa la longitud de la cadena y $S$ la cadena dada. Se garantiza que todos los caracteres son mayúsculas, con $s_i \in A-Z$, porque la genética bovina está mucho más avanzada que la nuestra.

Salida

Para cada $v$ en $1\dots N$, imprime el número de pares $(K,L)$ con $|P|=v$, cada número en una línea separada.

Ejemplos

Entrada 1

8
AGTCAACG

Salida 1

11
10
5
4
2
2
1
1

Nota

En este caso, la tercera línea de salida es 5 porque exactamente 5 pares de $K$ y $L$ dan tres genes «ganadores» candidatos. Estos candidatos son los siguientes ($p_i$ está indexado desde $0$):

(4,2) -> P = [0,3,4]
(5,3) -> P = [0,3,4]
(6,4) -> P = [0,3,4]
(6,5) -> P = [0,1,3]
(6,6) -> P = [0,1,2]

Para ver cómo (4,2) produce estos resultados, tomamos todos los $4$-mers:

AGTC
GTCA
TCAA
CAAC
AACG

Para cada $4$-mer, identificamos la subcadena de longitud 2 mínima lexicográficamente:

AGTC -> AG
GTCA -> CA
TCAA -> AA
CAAC -> AA
AACG -> AA

Añadimos las posiciones de estas subcadenas en la cadena original a un conjunto $P$ para obtener $P = [0,3,4]$.

En cambio, el par $(4,1)$ produce solo $2$ genes «ganadores» candidatos en total. Si tomamos todos los $4$-mers e identificamos la subcadena de longitud $1$ mínima lexicográficamente (usando A, A' y A* para distinguir las distintas A), obtenemos:

AGTC -> A
GTCA' -> A'
TCA'A* -> A'
CA'A*C -> A'
A'A*CG -> A'

Aunque A' y A* son ambas mínimas lexicográficamente en los 3 últimos casos, la subcadena más a la izquierda tiene prioridad, por lo que A' es el único candidato contado en todos ellos. Así, $P = [0,4]$.

Subtareas

  • Entradas 2-4: $N \leq 100$
  • Entradas 5-7: $N \leq 500$
  • Entradas 8-16: sin restricciones adicionales.

Autor del problema: Suhas Nagar

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.