QOJ.ac

QOJ

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

#20874. „Zwycięski” gen

Statistics

Po latach organizowania gier i obserwowania, jak Bessie raz za razem zajmuje pierwsze miejsce, Farmer John zrozumiał, że to nie przypadek. Uznał, że wygrywanie musi być zapisane w jej DNA, i postanowił znaleźć ten „zwycięski” gen.

Opracował procedurę znajdowania jego możliwych kandydatów. Genom Bessie to napis $S$ długości $N$, gdzie $1 \leq N \leq 3000$. Wybiera parę $(K,L)$ z $1 \leq L \leq K \leq N$, oznaczającą, że geny kandydujące mają długość $L$ i są szukane wewnątrz większego podnapisu długości $K$. Bierze wszystkie podnapisy długości $K$ napisu $S$, każdy nazywany $k$-merem. Dla każdego $k$-meru rozpatruje wszystkie podnapisy długości $L$ i wybiera najmniejszy leksykograficznie jako gen kandydujący (najbardziej z lewej w razie remisu). Następnie dodaje do zbioru $P$ pozycję $p_i$ jego początku w $S$, indeksowaną od $0$.

Ponieważ nie wybrał jeszcze $K$ i $L$, chce znać liczbę kandydatów dla każdej pary $(K,L)$.

Dla każdego $v$ z $1\dots N$ pomóż ustalić liczbę par $(K,L)$ z $|P|=v$.

Wejście

$N$ oznacza długość napisu, a $S$ podany napis. Wszystkie znaki są gwarantowanie wielkimi literami, $s_i \in A-Z$, ponieważ genetyka bydła jest znacznie bardziej zaawansowana niż nasza.

Wyjście

Dla każdego $v$ z $1\dots N$ wypisz liczbę par $(K,L)$ z $|P|=v$, każdą liczbę w osobnym wierszu.

Przykład

Wejście 1

8
AGTCAACG

Wyjście 1

11
10
5
4
2
2
1
1

Uwagi

Trzeci wiersz wyjścia w tym teście to 5, bo dokładnie 5 par $K$ i $L$ daje trzy „zwycięskie” geny kandydujące. Kandydaci są następujący ($p_i$ jest indeksowane od $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]

Aby zobaczyć, jak (4,2) daje te wyniki, bierzemy wszystkie $4$-mery:

AGTC
GTCA
TCAA
CAAC
AACG

Dla każdego $4$-meru wybieramy najmniejszy leksykograficznie podnapis długości 2:

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

Dodajemy pozycje tych podnapisów w pierwotnym napisie do zbioru $P$, uzyskując $P = [0,3,4]$.

Z kolei para $(4,1)$ daje łącznie tylko $2$ „zwycięskie” geny kandydujące. Biorąc wszystkie $4$-mery i wybierając najmniejszy leksykograficznie podnapis długości $1$ (używając A, A' i A* do rozróżnienia różnych A), otrzymujemy:

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

Choć w ostatnich 3 przypadkach zarówno A', jak i A* są najmniejsze leksykograficznie, pierwszeństwo ma podnapis najbardziej z lewej. Dlatego w każdym z tych przypadków tylko A' liczy się jako kandydat. Zatem $P = [0,4]$.

Podzadania

  • Wejścia 2-4: $N \leq 100$
  • Wejścia 5-7: $N \leq 500$
  • Wejścia 8-16: brak dodatkowych ograniczeń.

Autor zadania: 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.