QOJ.ac

QOJ

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

#20874. Le gène « gagnant »

Statistics

Après des années à organiser des jeux et à voir Bessie terminer première à répétition, Farmer John comprend que ce ne peut pas être un hasard. Il conclut que la victoire doit être inscrite dans son ADN et entreprend de trouver ce gène « gagnant ».

Il conçoit un procédé pour identifier des candidats à ce gène. Le génome de Bessie est une chaîne $S$ de longueur $N$, où $1 \leq N \leq 3000$. Il choisit une paire $(K,L)$ avec $1 \leq L \leq K \leq N$, signifiant que les gènes candidats auront une longueur $L$ et seront recherchés dans une sous-chaîne plus grande de longueur $K$. Il prend toutes les sous-chaînes de longueur $K$ de $S$, chacune appelée un $k$-mer. Pour chaque $k$-mer, il examine toutes les sous-chaînes de longueur $L$, choisit la plus petite dans l'ordre lexicographique comme gène candidat (la plus à gauche en cas d'égalité), puis ajoute à un ensemble $P$ sa position de début $p_i$ dans $S$, indexée à partir de $0$.

Comme il n'a pas encore choisi $K$ et $L$, il souhaite connaître le nombre de candidats pour chaque paire $(K,L)$.

Pour chaque $v$ dans $1\dots N$, aidez-le à déterminer le nombre de paires $(K,L)$ telles que $|P|=v$.

Entrée

$N$ représente la longueur de la chaîne et $S$ la chaîne donnée. Tous les caractères sont garantis majuscules, avec $s_i \in A-Z$, car la génétique bovine est bien plus avancée que la nôtre.

Sortie

Pour chaque $v$ dans $1\dots N$, affichez le nombre de paires $(K,L)$ telles que $|P|=v$, chaque nombre sur une ligne séparée.

Exemples

Entrée 1

8
AGTCAACG

Sortie 1

11
10
5
4
2
2
1
1

Remarque

Dans ce cas, la troisième ligne de sortie vaut 5, car exactement 5 paires de $K$ et $L$ donnent trois gènes « gagnants » candidats. Ces candidats sont les suivants ($p_i$ est indexé à partir de $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]

Pour voir comment (4,2) donne ces résultats, prenons tous les $4$-mers :

AGTC
GTCA
TCAA
CAAC
AACG

Pour chaque $4$-mer, choisissons la sous-chaîne de longueur 2 minimale dans l'ordre lexicographique :

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

Ajoutons à un ensemble $P$ les positions de ces sous-chaînes dans la chaîne d'origine. Nous obtenons $P = [0,3,4]$.

En revanche, la paire $(4,1)$ donne seulement $2$ gènes « gagnants » candidats au total. Si nous choisissons, dans chaque $4$-mer, la sous-chaîne de longueur $1$ minimale dans l'ordre lexicographique (en utilisant A, A' et A* pour distinguer les différents A), nous obtenons :

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

Dans les 3 derniers cas, A' et A* sont tous deux minimaux dans l'ordre lexicographique, mais la sous-chaîne la plus à gauche est prioritaire. A' est donc le seul candidat compté dans chacun de ces cas. Ainsi, $P = [0,4]$.

Sous-tâches

  • Entrées 2-4 : $N \leq 100$
  • Entrées 5-7 : $N \leq 500$
  • Entrées 8-16 : aucune contrainte supplémentaire.

Auteur du problème : 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.